【问题标题】:Webscraping interactive aspx websites in R在 R 中抓取交互式 aspx 网站
【发布时间】:2015-02-17 05:15:02
【问题描述】:

我正在尝试从交互式 aspx 网页中抓取表格。我已经阅读了堆栈上的所有 R 网络抓取问题,我想我已经接近了,但我似乎不太明白。

我想从here 生成的表中提取数据。最终我想遍历每个日期期间和状态选项,但我的挑战实际上只是让 R 提交我的参数并为任何特定查询拉入结果表。

据我所知,答案可能涉及 RCurl 和 XML 包,使用我的参数发布一个“表单”,然后读取结果页面的 html。

我最近的努力是这样的:

library(RCurl)
library(XML)

curl = getCurlHandle()

link = "http://indiawater.gov.in/IMISReports/Reports/WaterQuality/rpt_WQM_HabitationWiseLabTesting_S.aspx"

html = getURL(link, curl = curl)

params = list('ctl00$ContentPlaceHolder$ddFinYear' = '2005-2006',
              'ctl00$ContentPlaceHolder$ddState' = 'BIHAR')

html2 = postForm(link, .params = params, curl = curl)

table = readHTMLTable(html2 )

我很难真正说出我在什么时候遇到了问题。一方面 html == html2 产生错误,所以我认为 html2 在提交表单后已经进展到某个点,但我仍然不清楚表单是否提交不正确或者是否有效以及它的读入不工作的表。

感谢任何建议和帮助。谢谢!

【问题讨论】:

标签: r web-scraping rcurl


【解决方案1】:

我已经能够使用以下代码提取表格的内容:

library(RDCOMClient)
library(stringr)

url <- "https://ejalshakti.gov.in/IMISReports/Reports/Physical/rpt_RWS_TargetAchievement_S.aspx?Rep=0&RP=Y&APP=IMIS"
IEApp <- COMCreate("InternetExplorer.Application")
IEApp[['Visible']] <- TRUE
IEApp$Navigate(url)

doc <- IEApp$Document()
mouseEvent <- doc$createEvent("MouseEvent")
mouseEvent$initEvent("click", TRUE, FALSE)

web_Obj_Date <- doc$getElementByID("ContentPlaceHolder_ddfinyear")
web_Obj_Date[['Value']] <- "2015-2016"

web_Obj_Submit <- doc$getElementByID("ContentPlaceHolder_btnGO")
web_Obj_Submit$dispatchEvent(mouseEvent) 

Sys.sleep(5)
html_Content <- doc$documentElement()$innerText()

text_Table <- stringr::str_extract_all(string = html_Content, pattern = "Financial Year:((.|\\r\\n)*)Disclaimer and Privacy Policy")[[1]]
strsplit(text_Table, "\r\n")[[1]]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多