小编Scr*_*oat的帖子

迭代rvest scrape函数给出:"open.connection错误(x,"rb"):达到超时"

我正在使用"rvest"-package 抓取这个网站.当我迭代我的函数太多次时,我得到"open.connection(x,"rb")中的错误:达到了超时".我搜索过类似的问题,但答案似乎导致死路一条.我怀疑它是服务器端,并且网站对我可以访问该页面的次数有内置限制.怎么调查这个假设?

代码:我有到底层网页的链接,并希望构建一个数据框,其中包含从相关网页中提取的信息.我稍微简化了我的抓取功能,因为更简单的功能仍然会出现问题:

scrape_test = function(link) {

  slit <-  str_split(link, "/") %>%
    unlist()
  id <- slit[5]
  sem <- slit[6]

  name <- link %>% 
    read_html(encoding = "UTF-8") %>%
    html_nodes("h2") %>%
    html_text() %>%
    str_replace_all("\r\n", "") %>%
    str_trim()

  return(data.frame(id, sem, name))
}
Run Code Online (Sandbox Code Playgroud)

我使用purrr-package map_df()来迭代函数:

test.data = links %>%
  map_df(scrape_test)
Run Code Online (Sandbox Code Playgroud)

现在,如果我仅使用50个链接迭代该函数,则不会收到任何错误.但是当我增加链接的数量时,我遇到了前面提到的错误.此外,我收到以下警告:

  • "在bind_rows_(x,.id)中:不相等的因素级别:胁迫到角色"
  • "关闭未使用的连接4(链接)"

编辑:以下代码创建链接对象可用于重现我的结果:

links <- c(rep("http://karakterstatistik.stads.ku.dk/Histogram/NMAK13032E/Winter-2013/B2", 100))
Run Code Online (Sandbox Code Playgroud)

r function web-scraping rvest

2
推荐指数
1
解决办法
4325
查看次数

标签 统计

function ×1

r ×1

rvest ×1

web-scraping ×1