当服务器繁忙且for循环中不存在url时,R错误捕获
我有一个网站,在那里我试图在网页上的几个项目。另外,有多个连续的页面,我想刮取类似的内容,所以我建立了一个for循环来遍历这些页面 有时,服务器可能会恢复繁忙状态,需要重试元素刮取(这可能是随机发生的)。我已经构建了代码,这非常有效 然而,在for循环的范围内,可能存在一些不存在的随机页面。我需要完全跳过这些页面,转到下一页 我在另一个例子中发现了这一点,我在代码中没有成功实现。我将如何为两个实例构建一个try-catch方法,在服务器繁忙时重试,在for循环中不存在当前url时跳到下一个url 下面是我的代码示例(没有太多细节):当服务器繁忙且for循环中不存在url时,R错误捕获,r,error-handling,web-scraping,try-catch,rvest,R,Error Handling,Web Scraping,Try Catch,Rvest,我有一个网站,在那里我试图在网页上的几个项目。另外,有多个连续的页面,我想刮取类似的内容,所以我建立了一个for循环来遍历这些页面 有时,服务器可能会恢复繁忙状态,需要重试元素刮取(这可能是随机发生的)。我已经构建了代码,这非常有效 然而,在for循环的范围内,可能存在一些不存在的随机页面。我需要完全跳过这些页面,转到下一页 我在另一个例子中发现了这一点,我在代码中没有成功实现。我将如何为两个实例构建一个try-catch方法,在服务器繁忙时重试,在for循环中不存在当前url时跳到下一个url
库(rvest)
数据集%
html_text())
Scoredf
library (rvest)
DatasetAll <- NULL
urllink <- c(1:100)
for(i in urllink)
{
url <- paste0("http://www.somewebpage/link",i,".html")
while(TRUE){
Name <- try(url %>%
read_html() %>%
html_nodes(xpath= '//*[contains(concat( " ", @class, " " ), concat( " ", "datarow", " " ))]//td[(((count(preceding-sibling::*) + 1) = 2) and parent::*)]') %>%
html_text())
if(!is(OppName, 'try-error')) break}
Namedf <- data.frame(Name)
while(TRUE){
Score <- try(url %>%
read_html() %>%
html_nodes(xpath= '//*[contains(concat( " ", @class, " " ), concat( " ", "datarow", " " ))]//td[(((count(preceding-sibling::*) + 1) = 3) and parent::*)]') %>%
html_text())
Scoredf <- data.frame(Score)
Dataset <- cbind(Namedf, Scoredf)
other_calculation <- Transform scraped data
DatasetAll<-rbind(Dataset,DatasetAll)
}
write.table(DatasetAll, file = paste0("C:/My/Location.csv"), sep = ",", row.names=FALSE,qmethod = "double")