【问题标题】:How to scrape a web-site filling out forms and 'clicking' on links with R?如何使用 R 抓取填写表格并“点击”链接的网站?
【发布时间】:2012-03-28 08:47:16
【问题描述】:

我想通过网络抓取我无法访问的 java 脚本页面的 html 源代码,除非在下拉列表中选择一个选项,然后“单击”链接。尽管没有学过java,一个简单的例子可以是这样的:

在此 URL 底部的下拉列表中以所有可用语言对主要维基百科页面进行 Web 抓取:http://www.wikipedia.org/

为此,我需要选择一种语言,例如英语,然后在新网址左侧的“主页”链接中“单击”(http://en.wikipedia.org/wiki/特殊:搜索?搜索=&go=Go)。

在这一步之后,我会抓取英文维基百科主页的html源代码。

有没有办法使用 R 来做到这一点?我已经尝试过 RCurl 和 XML 包,但它不适用于 javascript 页面。

如果使用 R 无法实现,谁能告诉我如何使用 python 做到这一点?

【问题讨论】:

  • 我不知道为什么有人在没有评论的情况下降级了这个问题。实际上我是 R 编程的初学者,在 celenius 回答之后,我开始学习 Python。如果问题不清楚或没有显示任何研究工作,我将不胜感激。

标签: python r web-scraping rcurl


【解决方案1】:

查看 RCurl 和 XML 包,用于将表单信息发布到网站,然后处理数据。 RCurl 非常酷,但您可能会遇到 HTML 解析问题,因为如果它不符合标准,XML 包可能不想玩得很好。

但是,如果您有兴趣学习 Python,那么上面的 Celenius 示例和 beautifulSoup 将是您所需要的。

【讨论】:

    【解决方案2】:

    使用带有selenium 包的python 可以做到这一点。有一些有用的例子here。我发现安装 Firebug 很有帮助,这样我就可以识别页面上的元素。还有一个带有交互式窗口的 Selenium Firefox 插件也可以提供帮助。

    import sys
    import selenium
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys   
    
    driver = webdriver.Firefox()
    driver.get("http://website.aspx")    
    
    elem = driver.find_element_by_id("ctl00_ctl00")
    elem.send_keys( '15' )
    elem.send_keys( Keys.RETURN )
    

    【讨论】:

    • celenius,其实我不使用python。你知道有什么适合初学者的材料参考吗?
    猜你喜欢
    • 2018-08-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    相关资源
    最近更新 更多