r - 如果 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。
解决方案
这可以通过简单的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)
}
如果这不是您的想法,请告诉我。
推荐阅读
- python - 如何使用运算符?
- laravel - 通过 Laravel 5.8 更改日期格式以将其保存在数据库中
- c - sprintf() 未正确对齐
- azure - Azure 应用服务上的出站连接超时
- node.js - Sequelize——一种定义动态属性的方法
- node.js - Angular 8 - 无法让 httpClient POST 与 Socket.io 一起完成它的工作?
- arrays - Kotlin 按一项对两个列表进行排序
- ios - 将图像大小减小到最大 100 kb,并在 iOS 中固定尺寸为 512x512
- javascript - 从 Ruby on Rails 输出哈希数组到 chart.js
- python - 导入类时未定义 NameError DataFrame