当使用rvest
检索h1标题时,我有时会遇到404页。这将停止进程并返回此错误。
open.connection(x,“rb”)出错:404错误页面
请参见下面的示例
Data<-data.frame(Pages=c(
"http://boingboing.net/2016/06/16/spam-king-sanford-wallace.html",
"http://boingboing.net/2016/06/16/omg-the-japanese-trump-commer.html",
"http://boingboing.net/2016/06/16/omar-mateen-posted-to-facebook.html",
"http://boingboing.net/2016/06/16/omar-mateen-posted-to-facdddebook.html"))
用于检索h1的代码
library (rvest)
sapply(Data$Pages, function(url){
url %>%
as.character() %>%
read_html() %>%
html_nodes('h1') %>%
html_text()
})
有没有一种方法可以包含一个参数来忽略错误并继续这个过程?
3条答案
按热度按时间vlju58qv1#
您正在寻找
try
或tryCatch
,这是R处理错误捕获的方式。使用
try
,您只需要将可能失败的东西 Package 在try()
中,它将返回错误并继续运行:然而,虽然这将得到一切,但它也会将错误的数据插入我们的结果中。
tryCatch
允许你配置当一个错误被调用时会发生什么,方法是传递一个函数,当该条件出现时运行:好了好多了。
更新
在tidyverse中,
purrr
包提供了两个函数,safely
和possibly
,它们的工作方式类似于try
和tryCatch
。它们是 * 副词 *,而不是动词,这意味着它们接受一个函数,修改它以处理错误,并返回一个新函数(而不是数据对象),然后可以调用。示例:lawou6xi2#
你可以看到这个问题的解释here
cqoc49vn3#
我想添加一个简单的解决方案,我发现elsewhere:
而且对我来说效果很好。
我也是这样用的: