【发布时间】:2021-07-24 11:40:25
【问题描述】:
我一直在努力解决以下问题: 我有一个带有 +22'000 URL 的向量,我将其放入抓取循环中。 抓取循环没有给我任何错误消息,但突然停止工作,即使代码仍在运行(红色停止符号仍然存在,但循环实际上不再运行)。好像 R 挂了。
我的猜测是,这与打开的连接有关,即使我插入了 'close(url)' 代码。
install.packages("pacman")
require(pacman)
pacman::p_load(stringr, tibble, xml2, stringr, dplyr, tidyr, base, readxl,rvest,RCurl)
OEM_Nummer_Toner<-read_html('https://www.tonerpartner.ch/oem-Nummer/')%>%
html_nodes('ul>li>a')%>%
html_attr('href')
Output <- data.frame(matrix(ncol=1, nrow=0))
colnames(Output)<-'URL'
i<-1
for (j in OEM_Nummer_Toner) {
Sys.sleep(runif(1, min=0.5, max=1))
url<- paste0('https://www.tonerpartner.ch',j)
if (url.exists(url)==TRUE){
url<-url(url,'rb')
html<-read_html(url)
close(url)
update<- html %>%
html_nodes('.articletitle')%>%
html_attr('href')
update<-as.tibble(update)
names(update)<-'URL'
Output<<-rbind(Output, update)
}
else
{}
print(i)
print(j)
print(update)
i<-i+1
}
第一个循环生成向量以在第二个循环中循环。
我一直在研究这个问题,但我什至没有真正找出问题所在。
非常感谢! 大卫
【问题讨论】:
标签: r for-loop web-scraping apply rvest