open.connection(x,“rb”)出错:无法连接到服务器

时间:2016-06-13 16:03:22

标签: html r

尝试在R中使用rvest包时收到以下错误:

  

open.connection(x,“rb”)出错:无法连接到服务器

导致此错误消息的原因是什么?功能如下所示:

htmlpage <- read_html("http://forecast.weather.gov/MapClick.php?lat=42.27925753000045&lon=-71.41616624299962#.V17UH-IrKHs")

3 个答案:

答案 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替换为您公司的实际代理服务器网址。