我正在尝试使用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
}
由于某些网址无效,系统会显示以下消息:
open.connection(x,“rb”)出错:无法解析主机:app.lo
我想在循环中引入以下内容:如果url不起作用,则假定文本为空,并让循环继续。这是一个真正的问题,因为循环正在停止,我试图消除一些网址,但我有大约200,000 htmls。
答案 0 :(得分:2)
这可以通过简单的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)
}
如果这不是您的想法,请告诉我。
答案 1 :(得分:0)
您应该只能切换到html_node
而不是html_nodes
。
html_node
将返回NA
。
没有任何示例网址,我无法测试。
有关更多参考,请参阅这些问答&gt;