尝试在R中使用rvest
包时收到以下错误:
open.connection(x,“rb”)出错:无法连接到服务器
导致此错误消息的原因是什么?功能如下所示:
htmlpage <- read_html("http://forecast.weather.gov/MapClick.php?lat=42.27925753000045&lon=-71.41616624299962#.V17UH-IrKHs")
答案 0 :(得分:6)
我尝试了不同的方法,问题不在于代理连接,而在于R获取连接的方式。通过定义url()
内网址的二进制连接,问题得以解决。
con <- url("http://www.imdb.com/title/tt1490017/", "rb")
lego_movie <- read_html(con)
答案 1 :(得分:1)
你必须打开一个会话,然后从中读取
htmlpage <- html_session("http://forecast.weather.gov/MapClick.php?lat=42.27925753000045&lon=-71.41616624299962#.V17UH-IrKHs", httr::user_agent("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.20 (KHTML, like Gecko) Chrome/11.0.672.2 Safari/534.20"))
htmlpage %>%
read_html() %>%
html_text()
答案 2 :(得分:0)
问题在于,您的工作计算机始终在寻找您公司的代理服务器,无论您是在工作,使用热点,还是在家中,都会发生这种情况。
解决此问题的最简单方法是在函数中添加参数atWork
,然后使用httr::use_proxy()
函数设置要使用的相应代理:
myFunction <- function(arg1, atWork)
if(atWork){
proxy.string <- use_proxy("http://proxy-server.YourCompanyName.com", port = 8080)
} else {
proxy.string <- use_proxy("")
}
# then open a session
sess <- html_session(myUrl, proxy.string)
do stuff here
return(result)
}
当然,您需要将proxy-server.YourCompanyName
替换为您公司的实际代理服务器网址。