2016-06-13 227 views
1

我接收嘗試中的R用rvest包時以下錯誤:錯誤open.connection(X, 「RB」):無法連接到服務器

錯誤open.connection(X ,「rb」):無法連接到服務器

什麼是導致此錯誤訊息?功能如下所示:

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

對我來說運行良好。可以簡單地做你的互聯網連接。 – joran

+0

也有同樣的問題。你在哪種計算機上運行代碼? –

回答

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() 
+0

仍然不起作用,我得到相同的錯誤 –

+0

我原本在辦公室時在我的HP ZBook工作計算機上出現此錯誤。當我將工作電腦連接到熱點時,問題就消失了。同樣,當我在家中使用我的個人HP時,我沒有收到同樣的錯誤。我想這個問題是由我公司辦公室的安全設置造成的。 –

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您的實際公司的代理服務器網址。

3

我嘗試了不同的方法,問題不在代理連接中,而是以R獲取連接的方式進行。通過使用url(your_url,「rb」)定義二進制連接,問題就解決了。

con <- url("http://www.imdb.com/title/tt1490017/", "rb") 
lego_movie <- read_html(con)