RCurl,错误:连接超时

时间:2011-10-01 11:44:32

标签: r rcurl

我使用R的XML和RCurl包来从网站获取数据。 该脚本需要废弃6,000,000页,因此我创建了一个循环。

for (page in c(1:6000000)){

 my_url = paste('http://webpage.....')
 page1 <- getURL(my_url, encoding="UTF-8")
 mydata <- htmlParse(page1, asText=TRUE, encoding="UTF-8")
 title <- xpathSApply(mydata, '//head/title', xmlValue, simplify = TRUE, encoding="UTF-8")

.....
.....
.....}

但是,经过几次循环后,我收到错误消息:

  

curlPerform出错(curl = curl,.opts = opts,.encoding = .encoding)   :连接超时

问题在于我不明白“超时”的工作原理。有时,过程在700页之后结束,而其他时间在1000,1200之后的页面之后结束。这一步不稳定。 当连接超时时,我无法从笔记本电脑访问此网页15分钟。 我想用一个命令将每1000页报废的过程延迟15分钟

if(page==1000) Sys.sleep(901)

,但没有任何改变。

任何想法出了什么问题以及如何克服这个问题?

2 个答案:

答案 0 :(得分:2)

您可以使用命令curl在R中调用System()的本机安装。这样,您就可以访问curl目前不支持的所有RCurl选项,例如--retry <num>。选项--retry <num>将导致已发出的curl查询在每次失败后重复尝试更长的时间,即在第一次失败后重试1秒,在第二次失败后重试2秒,在第三次失败后重试4秒, 等等。 cURL网站http://curl.haxx.se/docs/manpage.html也提供其他时间控制选项。

答案 1 :(得分:1)

我解决了。只需在每次迭代中添加Sys.sleep(1)