【问题标题】:How can I fix "connection timed out after 10000 milliseconds" while scraping in R?在 R 中抓取时,如何修复“10000 毫秒后连接超时”?
【发布时间】:2019-02-12 22:53:00
【问题描述】:

我试图抓取多个网站以提取网站标题、描述和关键字。抓取大约 15 个网站是可以的,但是当我尝试抓取更多网站时,R 不断返回超时错误。

这是错误消息的副本:

Error in open.connection(x, "rb") : 
  Timeout was reached: Connection timed out after 10000 milliseconds

我尝试使用options(timeout = 400000),但它不起作用。

另外,我正在考虑下载页面并将read_html 下载到 R 中,但是这个想法是不可行的,因为我有很多 URL 的列表。

【问题讨论】:

    标签: r web-scraping


    【解决方案1】:

    此问题的一个解决方案可能是在每次迭代后关闭浏览器。您可以尝试为每个网页打开一个新浏览器,然后在抓取后将其关闭。这可以针对所有需要抓取的网站循环完成。

    【讨论】:

    • 好主意,但我不知道如何在循环中做到这一点。它需要额外的包装吗?听起来我需要使用 RSelenium。
    • 是的,您可以使用 RSelenium 做到这一点。它具有关闭浏览器并打开ropensci.github.io/RSelenium/reference/rsDriver.html# NOT RUN { # start a chrome browser rD <- rsDriver() remDr <- rD[["client"]] remDr$navigate("http://www.google.com/ncr") remDr$navigate("http://www.bbc.com") remDr$close() # stop the selenium server rD[["server"]]$stop() # if user forgets to stop server it will be garbage collected. rD <- rsDriver() rm(rD) gc(rD) 的内置功能
    • 我在 RSelenium 上进行搜索时也看到了这一点。看起来我需要修改很多代码,因为它涉及read_html。您介意看看马特发布的解决方案,看看它是否可行吗?谢谢你。 stackoverflow.com/questions/54637802/…
    • 试试这个方法#website <- list(urls) i<-1 dataset <- data.frame() while(i <= 4){ url <- website[i] remDr$navigate(url) #webElem_state <- remDr$findElement(using = "css", "div.a-row.a-spacing- small.review-data") page_source <- remDr$getPageSource() reviews <-read_html(page_source[[1]]) %>% # read table html_nodes(" class/xpath")%>% html_text() #/or html_table() i <- i+1 remDr$close() rm(pJS) }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 2021-11-14
    • 2021-05-28
    • 2023-01-10
    • 2021-08-23
    • 2021-04-23
    相关资源
    最近更新 更多