2011-12-02 139 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