错误503从同一个网站上抓取多个网址而没有错误503

时间:2020-04-02 11:20:03

标签: r web-scraping rvest httr rcurl

我要在亚马逊网页上删除500多个asins,这意味着500多个URL。我在每个asin进行刮擦之间使用sys.Sleep(6),而当R在asins编号为100进行刮擦时,使用sys.Sleep(300),但每次在同一点,asin 101都出现错误503。 / p>

我尝试增加每100个被刮伤的asins的睡眠时间,但这是行不通的。 ¿可能有什么软件包可以帮助我,或者有一些指令可以帮助我吗?

我的代码是这样的:

df<-NULL

r=0

for(i in asin.list$V1) {
 print(i)

 url<-paste0("https://www.amazon.es/gp/offer-listing/",i,"/ref=dp_olp_new?ie=UTF8&condition=new")

 Sys.sleep(6)
 r=r+1
 dades<-read_html(url)

 url<-(url)
 asin<-(i)
 rating<-dades %>% html_nodes("div span span a i span.a-icon-alt") %>% html_text() %>% trimws()
 opinions<-dades %>% html_nodes("span.a-size-small a.a-link-normal") %>% html_text() %>% trimws()

 if(length(rating)==0){ rating<-"-"}
 if(length(opinions)==0){ opinions<-"-"}

 info<-data.frame(asin=asin,rating=rating,opinions=opinions)
 df<-rbind(df,info)

 if (r %in% seq(100,1000,100) ){
 Sys.sleep(300)
 }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

问题似乎不在R代码中,而是在Amazon阻止您的呼叫中。一个好的做法是随机设置暂停Sys.sleep(2 + rnorm(1))和关闭连接

dades <- read_html(url)
closeAllConnections()

此外,您可以尝试使用RSelenium软件包,在其中可以掩盖您的抓取意图。

示例:https://tykiww.github.io/2018-04-05-Selenium-Scraping/