【发布时间】:2020-10-04 16:03:16
【问题描述】:
我正在尝试抓取一个网站,但它不允许我抓取超过 9 个页面,有什么方法可以在 9 个页面后停止循环并中断一两分钟然后重新开始抓取?
代码如下:
library(RCurl)
library(stringr)
library(XML)
jt<- c()
for (i in 1:70){
tryCatch({
html<- getURL((url[[i]]), followlocation = TRUE)
doc = htmlParse(html, asText=TRUE)
new <- xpathSApply(doc, "div/a",
xmlValue)
jt[[i]] <- new},error=function(e){cat("ERROR :",conditionMessage(e), "\n")})}
【问题讨论】:
-
将 sys.sleep() 函数添加到循环中。该函数将暂停脚本。
-
可以在迭代次数而不是每次迭代后暂停吗?
-
在抓取时,您可以做两件事来更好地模拟正常流量:1)将标题设置为非常常见的浏览器(Chrome 很好)。 2) 将
Sys.sleep调用(>= 1 秒,如果随机化更好)添加到 for 循环的每次迭代。您可能会慢一些,但它可能会让您超过 9 页的限制。