R语言爬虫报错:Could not resolve proxy: myproxy.server.com 如何解决?
解决R爬虫代理解析错误的方案
你的爬虫代码之前能正常运行,现在碰到了Could not resolve proxy: myproxy.server.com的错误,这大概率是代理配置变动或者当前网络环境不再需要代理导致的,下面是一步步的解决思路:
第一步:先确认当前R的代理设置
先看看R当前继承的代理环境变量有哪些,运行这段代码:
Sys.getenv(c("http_proxy", "https_proxy", "HTTP_PROXY", "HTTPS_PROXY"))
如果输出里能看到myproxy.server.com相关内容,说明R正在使用这个代理,但当前网络没法解析它。
第二步:根据你的网络环境调整代理
场景1:当前网络不需要代理(比如从公司内网换到了家用网络)
直接清除这些代理环境变量,再重新跑你的爬虫代码就行:
Sys.unsetenv("http_proxy") Sys.unsetenv("https_proxy") Sys.unsetenv("HTTP_PROXY") Sys.unsetenv("HTTPS_PROXY")
场景2:确实需要代理,但地址有变化
先确认好正确的代理服务器地址(要包含完整的协议,比如http://和端口号),然后设置正确的环境变量:
# 把下面的地址替换成你实际可用的代理 Sys.setenv(http_proxy = "http://correct.proxy.address:port") Sys.setenv(https_proxy = "http://correct.proxy.address:port")
设置完再尝试运行爬虫代码。
场景3:只想给当前爬虫请求单独配置代理
如果不想修改全局环境变量,可以直接在read_html里指定代理参数,只对这个请求生效:
# 替换成正确的代理地址 hdoc = read_html(url_crawl, proxy = "http://correct.proxy.address:port")
额外排查小技巧
- 可以在终端/命令行里ping一下代理服务器域名(比如
ping myproxy.server.com),如果没法解析,说明这个域名在当前网络下不可用,得找运维确认正确的代理地址。 - 检查系统的全局代理设置(Windows的「Internet选项」、Mac的「网络」设置),如果系统全局开了代理,R会自动继承,这时候要么调整系统代理,要么在R里覆盖它。
另外你的原始代码里,爬取到的b_node还没处理存入body向量,可以之后补充类似body <- c(body, html_text(b_node))的逻辑,不过当前核心问题是代理配置,解决后代码应该就能恢复正常运行了。
内容的提问来源于stack exchange,提问作者Sang won kim
相关产品推荐
相关产品推荐

