2011-12-02 137 views
1

我想網絡刮如在網絡瀏覽器的源代碼中看到的HTML,爲此URL「https://portal.tirol.gv。 at/wisPvpSrv/wisSrv/wis/wbo_wis_auszug.aspx?ATTR = Y & TREE = N & ANL_ID = T20889658R3 & TYPE = 0「。web-scrape asp.net網站與r

我得到什麼用..

library(RCurl) 
library(XML) 
myurl = "https://portal.tirol.gv.at/wisPvpSrv/wisSrv/wis/wbo_wis_auszug.aspx?ATTR=Y&TREE=N&ANL_ID=T20889658R3&TYPE=0" 
x = getURL(myurl, followlocation = TRUE, ssl.verifypeer = FALSE) 
htmlParse(x, asText = TRUE) 

..是不是我看到在瀏覽器的源代碼 - 如何繞過這個?

+0

它看起來像你需要一個用戶名和密碼來訪問該網站。 –

回答

3

這裏亞去:

library(RCurl) 
library(XML) 

cookie = 'cookiefile.txt' 
curl = getCurlHandle (cookiefile = cookie , 
    useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en - US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6", 
    header = FALSE, 
    verbose = TRUE, 
    netrc = TRUE, 
    maxredirs = as.integer(20), 
    followlocation = TRUE, 
    # userpwd = "bob:duncantl", ## enter here your username:password 
    ssl.verifypeer = TRUE) 

myurl = "https://portal.tirol.gv.at/wisSrvPublic/wis/wbo_wis_auszug.aspx?ANL_ID=T20889658R3&TYPE=O" 

x = getURL(myurl, curl = curl, cainfo = "path to R/library/RCurl/CurlSSL/ca-bundle.crt") 

x2 <- gsub('\r','', gsub('\t','', gsub('\n','', x))) # remove white spaces 

htmlParse(x2, asText = TRUE) 

如果您無法通過SSL驗證看看這篇文章: using Rcurl with HTTPs

+0

WORKS! ..有公共訪問權限(請參閱上面的註釋)我不需要cookie或用戶名:pw。只是爲了好奇:這是工作的冗長= T,對吧?而且,如果我沒有正確設置useragent,會產生什麼影響? – Kay

+0

這是需要的ssl驗證,由cainfo術語定義,提供證書 –

1

如果該網站使用了大量的Javascript(看起來確實如此)來生成內容,那麼對於初學者來說,你幾乎陷入了困境。

如果您使用Firefox並獲得開發人員工具欄,那麼您可以禁用Javascript以查看沒有它的網站的樣子,以及可能會分辨哪些內容。您可能希望該網站有一個可用的非JavaScript版本(這稱爲'優雅退化',其中JS只用於花哨的東西)。

否則使用Firebug或其他JS調試器來查看網站在使用AJAX時如何提取內容。然後在R中複製這些調用並從響應中刪除。

不是我可以測試任何這個,因爲如果我去那個URL我得到一個Benutzername和Passwort提示,我沒有一個Benutzername。如果內容是身份驗證的後面,那麼您必須在RCurl進程中處理這些內容 - 這可能意味着使用Cookie等等。

祝你好運。

+0

sry,這個略有不同的網址將公開並可用於相同的目的:「https://portal.tirol.gv.at/wisSrvPublic/wis/wbo_wis_auszug.aspx?ANL_ID=T20889658R3&TYPE=O」 – Kay