【问题标题】:Scraping page with drop-down menus in RR中带有下拉菜单的抓取页面
【发布时间】:2015-02-25 04:12:48
【问题描述】:

我正在尝试使用 R 中的 Selenium 包来抓取以下页面:http://www.wbsec.gov.in/(S(njkinc55hbv2hw55xksxdv45))/DetailedResult/Detailed_gp.aspx。我对所选下拉列表的所有组合感兴趣,但不断获得

Couldnt connect to host on http://localhost:4444/wd/hub.Please ensure a Selenium server is running.
Error in queryRD(paste0(serverURL, "/session"), "POST", qdata = toJSON(serverOpts)) :

 library(RSelenium)
 library(XML)
 library(magrittr)

 checkForServer()
 startServer()
 remDrv<-remoteDriver()
 remDrv$open()
 remDrv$navigate("http://www.wbsec.gov.in/(S(njkinc55hbv2hw55xksxdv45))/DetailedResult/Detailed_gp.aspx")

任何帮助将不胜感激。

【问题讨论】:

    标签: r selenium web-scraping


    【解决方案1】:

    使用诸如burpsuite 之类的中介来捕获正在发生的事情,并将结果与​​rvesthtml_session 和/或httrPOST 结合使用。

    在这种情况下,您会看到原始 URL 包含初始的 &lt;select&gt; 菜单,并且您还会看到选择一个 POST 到:

    http://www.wbsec.gov.in/(S(njkinc55hbv2hw55xksxdv45))/DetailedResult/Detailed_gp.aspx
    

    在原始表单元素以及ddldistrictddlblockddlgp 中有许多隐藏变量。响应包含随后的&lt;select&gt; 菜单选项。

    使用rvest 获取每个下拉列表的value 属性,并将后续POSTs 设置为Detailed_gp.aspx URL,直到获得所有组合。

    你可能会得到一个 Selenium 的答案,但这个问题只需要发布到表单,这是 httrrvest 擅长的。

    【讨论】:

    • 感谢您的回复,但我对您提到的任何内容都没有任何背景。
    • 这是一个带有事件验证的 ASP.NET 站点,在这样的站点上不清楚您的建议是否可行。它可能有效,也可能无效,具体取决于后端和正在进行的验证。
    • @jdharrison 我通过 burpsuite 运行会话(这就是我知道所有变量名称的原因)。您所要做的就是捕获适当的初始会话变量和隐藏的表单变量,并通过每个POST 重播它们。
    • 隐藏的表单变量通常是动态的,并且会根据表单的当前状态而变化。有时使用最初给出的__viewstate__eventvalidation 变量就足够了。如果在后端执行验证,但情况并非总是如此。
    【解决方案2】:

    您似乎没有正确设置 Selenium。确保您已下载 Selenium 并在 R 中加载了 R Selenium。This link 可能会有所帮助。

    一旦 Selenium 设置正确,您所要做的就是找到 css 选择器(selectorgadget 是一个很好的工具),并将所需的信息发送到下拉列表,抓取网站并重复。我会做三个下拉菜单。

    【讨论】:

      猜你喜欢
      • 2019-09-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-10
      • 2019-04-05
      • 2012-09-17
      相关资源
      最近更新 更多