我抓取了一个网站,授权其按照机器人规则进行抓取,但有时我被阻止了。
虽然我与管理员联系以了解原因,但我想了解如何在R中使用不同的代理来继续抓取而不被阻止。
我遵循了这个快速教程: https://support.rstudio.com/hc/en-us/articles/200488488-Configuring-R-to-Use-an-HTTP-or-HTTPS-Proxy
所以我编辑了环境文件:
file.edit('~/.Renviron')
在其中插入了要随机选择的代理列表:
proxies_list <- c("128.199.109.241:8080","113.53.230.195:3128","125.141.200.53:80","125.141.200.14:80","128.199.200.112:138","149.56.123.99:3128","128.199.200.112:80","125.141.200.39:80","134.213.29.202:4444")
proxy <-paste0('https://', sample(proxies_list, 1))
https_proxy=proxy
但是当我抓取以下代码时:
download.file(url_proxy, destfile ='output.html',quiet = TRUE)
html_output <- read_html('output.html')
我一直被阻止。
我不能正确设置代理吗?
谢谢! M。
答案 0 :(得分:0)
您需要设置环境变量,而不是R变量。有关更多详细信息,请参见?download.file
。
例如
Sys.setenv(http_proxy=proxy)
在发生其他任何事情之前。还要注意文档中的警告:
These environment variables must be set before the download code is
first used: they cannot be altered later by calling 'Sys.setenv'.