代码之家  ›  专栏  ›  技术社区  ›  Matt Howell

什么是支持Javascript的屏幕抓取的好工具?[关闭]

  •  28
  • Matt Howell  · 技术社区  · 17 年前

    是否有一个好的测试套件或工具集,可以通过Javascript支持自动进行网站导航,并从页面中收集HTML?

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

    8 回复  |  直到 17 年前
        1
  •  26
  •   Jonny Buchanan    14 年前

    你可以使用 Selenium Watir 驱动一个真正的浏览器。

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

    • PhantomJS 是一个无头Webkit浏览器。
      • pjscrape 是一个基于PhantomJS和jQuery的抓取框架。
      • CasperJS 是一个导航脚本&测试工具bsaed on PhantomJS,如果你需要做的不仅仅是指向要抓取的URL。
    • Zombie Node.js

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

        2
  •  6
  •   Kevin Hakanson    17 年前

    使用 HtmlUnit 这也是一种可能性。

    HtmlUnit是一个“无GUI浏览器 Java程序”。它模拟HTML 文档并提供API 允许您调用页面,填写 表单、点击链接等……就像 你可以在“普通”浏览器中完成。

    它有相当好的JavaScript支持 (不断改进) 即使在相当复杂的情况下也能工作 AJAX库,模拟 取决于Firefox或Internet Explorer 根据您要使用的配置。

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

        3
  •  4
  •   user177887    15 年前

    Selenium现在封装了htmlunit,所以你不需要再启动浏览器了。新的WebDriver api也非常易于使用。 The first example use htmlunit driver

        4
  •  2
  •   tyshock    17 年前

    很难编写一个适用于任何任意网站的解决方案。每个导航菜单的实现都可能非常独特。我用刮刀做了很多工作,如果你知道你想瞄准的网站,我会这样做。

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

    如果您仍然有问题,或者需要模拟某种形式的POST或ajax,请获取Firefox并安装 LiveHttpHeaders 插件。此插件将允许您手动浏览网站,并捕获正在导航的网址以及在手动浏览过程中传递的任何Cookie。这就是您需要您的scraperbot发送请求以从目标Web服务器获得有效响应的原因。这也将捕获正在进行的任何ajax调用,在许多情况下,必须在您的scraper中实现相同的ajax调用才能获得所需的响应。

        5
  •  2
  •   Mat    15 年前

    Mozenda 也是一个很好的工具。

        6
  •  2
  •   KJW    13 年前

    请记住,javascript的狂热会扰乱浏览器的页面内部DOM模型,对原始HTML没有任何影响。

        7
  •  1
  •   William Keller    17 年前

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

        8
  •  1
  •   Daniel Honig    17 年前
        9
  •  1
  •   Community Mohan Dere    9 年前