Rvest, чтобы игнорировать URL-адреса не существует и двигаться дальше соскребая - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в веб-поиске и пакете rvest. То, что я хочу сделать sh, это ограничить содержание новостей с сайта ниже: http://www.xwlbo.com/31035.html Я заметил, что есть шаблон для исторических новостей с числовым индексом, однако позже я выяснил, что числовой индекс случайным образом без явных правил, поэтому могут быть веб-страницы, которые не существуют, и я получил ошибку Error in open.connection(x, "rb") : HTTP error 404.. Как я могу игнорировать пустые веб-страницы и переходить к существующим веб-страницам.

Вот что я до сих пор придумал:

library(tidyverse)
library(lubridate)
library(stringr)
library(rvest)
Sys.setlocale(category="LC_ALL",locale="chinese")

web_index_number <- 4058:31106

urls <- str_c("http://www.xwlbo.com/",web_index_number,".html")



news_collect <- function(x){
  webpage <- read_html(x)
  wp_title <- html_node(webpage,'h2') %>% 
   html_text()
wp_content <- html_nodes(webpage,'p , a , h2') %>% 
   html_text()
len <- length(wp_content)-3
wp_content <- wp_content[1:len]
wp_title <- rep(wp_title,len)
news <- data.frame(wp_title,wp_content)}

news_collection <- map_df(urls,news_collect)

любая помощь будет принята с благодарностью.

Спасибо, Феликс

1 Ответ

0 голосов
/ 23 апреля 2020

Вы можете использовать структуру trycatch, где вы пытаетесь выполнить код, начинающийся с news_collect . Если read_ html (x) не удается, вы можете просто написать код ошибки, чтобы распечатать ошибку и вернуть NULL.

...