什么是一个很好的工具来屏幕刮与JavaScript支持?

有没有一个好的testing套件或工具集,可以自动化网站导航 – 与JavaScript支持 – 并从网页收集HTML?

当然,我可以用BeautifulSoup刮直HTML。 但是这对我需要使用Javascript的网站没有好处。 🙂

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

这也是一些基于JavaScript的无头浏览器:

  • PhantomJS是一个无头的Webkit浏览器。
    • pjscrape是一个基于PhantomJS和jQuery的抓取框架。
    • CasperJS是PhantomJS上的一个导航脚本和testing工具,如果您需要做的更多的事情就是指向要被抓取的URL。
  • 僵尸的Node.js

就我个人而言,我对Selenium非常熟悉,Selenium支持在许多语言中编写自动化脚本,并且具有更成熟的工具,比如可用于编写和运行testing用例的优秀的Firefox Selenium IDE扩展,以及可以将testing脚本导出到多种语言。

使用HtmlUnit也是一种可能性。

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

它具有相当不错的JavaScript支持(不断改进),甚至可以使用非常复杂的AJAX库,根据您要使用的configuration模拟Firefox或Internet Explorer。

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

selenium现在包装htmlunit,所以你不需要再启动一个浏览器。 新的WebDriver API也非常容易使用。 第一个例子使用htmlunit驱动程序

编写一个解决scheme,这将是非常困难的,可以与任何任意网站。 每个导航菜单的实现可以是非常独特的。 我和刮刀一起工作过很多,而且只要你知道你想要的目标,下面就是我的方法。

通常,如果您分析导航菜单中使用的特定javascript,则使用正则expression式可以很容易地提取用于构build导航菜单的整个variables集合。 我从来没有使用过美丽的汤,但是从你的描述来看,它听起来像只能在HTML元素上工作,而不能在脚本标签中工作。

如果您仍然遇到问题,或者需要模拟某些表单POST或ajax,请获取Firefox并安装LiveHttpHeaders插件。 这个插件将允许您手动浏览网站,并捕获正在浏览的URL以及手动浏览过程中传递的任何cookie。 这就是你需要你的scraperbot发送一个请求来获得来自目标web服务器的有效响应。 这也将捕获正在进行的任何Ajax调用,并且在许多情况下,相同的Ajax调用必须在您的scraper中实现,以获得您想要的响应。

Mozenda也是一个很好的工具。

您可以尝试从Scrape.it的开源屏幕刮板

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

请记住,javascript fanciness与浏览器的页面的内部DOM模型混淆了,并且对原始HTML没有任何作用。

我一直在使用selenium,它发现它的效果很好。 selenium在浏览器中运行,并将与Firefox,Webkit和IE一起工作。 http://selenium.openqa.org/

@insin Watir不只是IE浏览器。

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