我想网页抓取网页浏览器源代码中的html,这个网址为“https://portal.tirol.gv.at/wisPvpSrv/wisSrv/wis/wbo_wis_auszug.aspx ?ATTR = Y&安培; TREE = N&安培; ANL_ID = T20889658R3&安培; TYPE = 0"
我得到的东西..
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
答案 1 :(得分:1)
如果该网站使用了大量的Javascript(而且似乎确实如此)来生成内容,那么你几乎就会被初学者所困扰。
如果您使用Firefox并获取开发人员工具栏,那么您可以禁用Javascript以查看没有它的网站的样子,以及哪些内容可能是可报废的。您可能希望该网站具有可用的非JavaScript版本(这称为“优雅降级”,其中JS仅用于描述某些内容)。
否则使用Firebug或其他一些JS调试器来查看网站如果使用AJAX如何提取内容。然后在R中复制这些调用并从响应中删除。
不是我可以测试任何这个,因为如果我去那个URL我得到一个Benutzername和Passwort提示符,而我没有Benutzername。如果内容落后于身份验证,那么您也必须在RCurl流程中处理 - 这可能意味着使用cookie等等。
祝你好运。