【问题标题】:web-scrape asp.net web-site with r使用 r 抓取 asp.net 网站
【发布时间】:2011-12-02 13:48:07
【问题描述】:

我想对网页浏览器源代码中看到的 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)

..不是我在浏览器源代码中看到的 - 如何规避这个??

【问题讨论】:

  • 您似乎需要用户名和密码才能访问该网站。

标签: asp.net r web-scraping


【解决方案1】:

来吧:

 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

【讨论】:

  • 工作! ..因为有公共访问权限(请参阅上面的评论),我不需要 cookie 或用户名:pw。只是出于好奇:这是 verbose=T 完成这项工作,对吧?而且,如果我没有正确设置用户代理会有什么影响?
  • 这是需要的 ssl 验证。由 cainfo 术语定义,提供证书
【解决方案2】:

如果该网站使用大量 Javascript(而且看起来确实如此)来生成内容,那么您对于初学者来说几乎是卡住了。

如果您使用 Firefox 并获得开发人员工具栏,那么您可以禁用 Javascript 以查看没有它的网站是什么样子,以及哪些内容可能是可抓取的。您可能希望该网站有一个可用的非 JavaScript 版本(这称为“优雅降级”,其中 JS 仅用于花哨的东西)。

否则,使用 Firebug 或其他一些 JS 调试器来查看使用 AJAX 的站点如何提取内容。然后在 R 中复制这些调用并从响应中抓取。

并不是说我可以测试任何这些,因为如果我访问那个 URL,我会得到一个 Benutzername 和 Passwort 提示,而我没有 Benutzername。如果内容落后于身份验证,那么您也必须在 RCurl 过程中处理它 - 这可能意味着使用 cookie 等等。

祝你好运。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-17
  • 2014-12-25
  • 2017-05-25
  • 2018-12-23
  • 1970-01-01
相关资源
最近更新 更多