首页 > 解决方案 > 如果 html_nodes 循环出错,请尝试填写“”

问题描述

我正在尝试html_nodes使用已保存到名为url. 我创建了一个循环来读取和抓取每个 url。

library(rvest)
for (i in url) {
  tex <- read_html(i)
  p_text <- tex %>%
    html_nodes("p") %>%
    html_text()
  a <- p_text
}

由于某些 url 不起作用,因此会出现以下消息:

open.connection(x,“rb”)中的错误:无法解析主机:app.lo

我想在循环中引入以下内容:如果 url 不起作用,则假定文本为空白,然后让循环继续。这确实是一个问题,因为循环正在停止并且我试图消除一些 url,但我有大约 200,000 个 html。

标签: rloopsweb-scrapinghtml-parsingrvest

解决方案


这可以通过简单的tryCatch错误处理来实现。我还介绍了一个列表a,您可以在其中存储您的输出(目前您将在每个循环中覆盖您的输出。)

library(rvest)
a <- list()
for (i in 1:length(url)) {
  url_use = url[[i]]
  a[[i]] <- 
    tryCatch({
        read_html(url_use) %>%
            html_nodes("p") %>%
            html_text()
    }, error = function(e) NA)
}

如果这不是您的想法,请告诉我。


推荐阅读