【问题标题】:Error 503 Scraping multiple url from the same web without error 503错误 503 从同一 Web 抓取多个 url 而没有错误 503
【发布时间】:2020-07-14 08:26:48
【问题描述】:

我正在抓取亚马逊网页,其中包含超过 500 个 asins,这意味着超过 500 个网址。我在每个 asin 之间使用 sys.Sleep(6) 进行刮擦,当 R 在 asin 编号 100 处刮擦时使用 sys.Sleep(300),但每次在 asin 101 中的同一点我都会收到错误 503。

我尝试在每刮 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)
 }
}

谢谢!

【问题讨论】:

  • 如果从 90 号开始,到 101 号停止会怎样?
  • 我该怎么做?
  • 例如通过更改循环:for(i in asin.list$V1[90:400]) { ...}
  • 它停在 r = 76

标签: r web-scraping rvest httr rcurl


【解决方案1】:

看起来问题不在于 R 代码,而在于亚马逊阻止了您的调用。一个好的做法是随机暂停Sys.sleep(2 + rnorm(1)) 并关闭连接

dades <- read_html(url)
closeAllConnections()

另外,您可以尝试RSelenium 包,您可以在其中隐藏您的抓取意图。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-10
    • 2018-11-25
    • 1970-01-01
    • 2017-07-07
    • 2019-01-07
    • 2012-08-29
    • 2015-11-13
    • 1970-01-01
    相关资源
    最近更新 更多