【问题标题】:What's a good tool to screen-scrape with Javascript support? [closed]什么是支持 Javascript 的屏幕抓取的好工具? [关闭]
【发布时间】:2010-09-12 14:46:51
【问题描述】:

是否有一个很好的测试套件或工具集可以自动化网站导航(支持 Javascript)并从页面收集 HTML?

当然,我可以用 BeautifulSoup 直接抓取 HTML。但这对需要 Javascript 的网站没有好处。 :)

【问题讨论】:

  • Selenium 最终正是我所需要的。它非常通用,可与多种语言(包括 Python)交互,它允许我存储内容并对其进行解析,然后根据返回的内容指导 Selenium 的操作。谢谢大家的回复!

标签: javascript screen-scraping


【解决方案1】:

您可以使用SeleniumWatir 来驱动真正的浏览器。

还有一些基于 JavaScript 的无头浏览器:

  • PhantomJS 是一个无头 Webkit 浏览器。
    • pjscrape 是一个基于 PhantomJS 和 jQuery 的抓取框架。
    • CasperJS 是一个基于 PhantomJS 的导航脚本和测试实用程序,如果您需要做的不仅仅是指向要抓取的 URL。
  • ZombieNode.js

就我个人而言,我最熟悉 Selenium,它支持用多种语言编写自动化脚本,并且拥有更成熟的工具,例如优秀的 Firefox 扩展 Selenium IDE,它可以用来编写和运行测试用例,并且可以将测试脚本导出为多种语言。

【讨论】:

    【解决方案2】:

    也可以使用HtmlUnit

    HtmlUnit 是一个“无 GUI 浏览器” Java 程序”。它为 HTML 建模 文档并提供一个 API 允许您调用页面,填写 表单、点击链接等...就像 您在“普通”浏览器中执行此操作。

    它有相当好的 JavaScript 支持 (不断改进)并且是 即使非常复杂也能工作 AJAX 库,模拟 Firefox 或 Internet Explorer 取决于 关于您要使用的配置。

    它通常用于测试 目的或检索信息 来自网站。

    【讨论】:

    • 我同意 HtmlUnit 对此有好处...而且它不需要浏览器即可运行,因此您可以将其粘贴在脚本中并让它在服务器上自动运行。
    • 只有真正的 javascript 支持是跟随位置重定向。这对抓取没有帮助。
    【解决方案3】:

    Selenium 现在包装了 htmlunit,因此您不再需要启动浏览器。新的 WebDriver api 也很容易使用。 The first example use htmlunit driver

    【讨论】:

      【解决方案4】:

      编写一个适用于任何任意站点的解决方案将非常困难。每个导航菜单实现都可以是非常独特的。我在爬虫方面做了很多工作,如果您知道要定位的网站,我会采取以下方法。

      通常,如果您分析导航菜单中使用的特定 javascript,使用正则表达式提取用于构建导航菜单的整个变量集是相当容易的。我从未使用过 Beautiful Soup,但从您的描述看来,它可能仅适用于 HTML 元素,无法在脚本标签内使用。

      如果您仍然遇到问题,或者需要模拟一些表单 POST 或 ajax,请获取 Firefox 并安装 LiveHttpHeaders 插件。此插件将允许您手动浏览该站点并捕获正在导航的 URL 以及在您手动浏览期间传递的任何 cookie。这就是您需要您的爬虫机器人发送请求以从目标网络服务器获得有效响应的内容。这也将捕获正在进行的任何 ajax 调用,并且在许多情况下,必须在您的爬虫中实现相同的 ajax 调用才能获得所需的响应。

      【讨论】:

        【解决方案5】:

        Mozenda 也是一个很棒的工具。

        【讨论】:

          【解决方案6】:

          你可以试试Scrape.it的开源截屏器

          更新:截至 2013 年 4 月 4 日,Scrape.it Screen Scraper 在 github 上开源。

          【讨论】:

            【解决方案7】:

            请记住,javascript 的奇思妙想会扰乱浏览器的页面内部 DOM 模型,并且对原始 HTML 没有任何作用。

            【讨论】:

              【解决方案8】:

              我一直在为此使用 Selenium,它发现它的效果很好。 Selenium 在浏览器中运行,可与 Firefox、Webkit 和 IE 一起使用。 http://selenium.openqa.org/

              【讨论】:

                【解决方案9】:

                @insin Watir 不仅仅是 IE。

                https://stackoverflow.com/questions/81566#83387

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-06-20
                  • 1970-01-01
                  相关资源
                  最近更新 更多