是有一个很好的测试套房或工具的设置,可以自动化网站的导航--with Javascript支持--并收集HTML从页?

当然我可以刮直HTML与BeautifulSoup.但是,这不我没有很好的网站,需要Javascript。:)

有帮助吗?

解决方案

你可以用 Watir 为推动一个真正的浏览器。

那里也有一些基于JavaScript无头浏览器:

  • PhantomJS 是一个无头。浏览器。
    • pjscrape 是一个刮框架的基础上PhantomJS和习
    • CasperJS 是导航的脚本和测试用bsaed在PhantomJS,如果你需要做多一点点在网址被擦伤。
  • 僵尸 对于 Node.js

就个人而言,我最熟悉的硒,它支持编写自动化的脚本中的一个良好的数languagues和更具有成熟的工具,例如优秀的 硒IDE 扩展的火狐,这可以用来编写和运行测试用例,并可以出口的测试脚本到多种语言。

其他提示

使用 HtmlUnit 也是可能的。

  

HtmlUnit是一个“GUI-Less浏览器”   Java程序“。它模拟HTML   文档并提供API   允许你调用页面,填写   表格,点击链接等...就像   你做的是“正常”的浏览器。

     

它有相当不错的JavaScript支持   (这是不断改进)并且是   能够工作甚至相当复杂   AJAX库,模拟其中之一   Firefox或Internet Explorer依赖   在你想要使用的配置上。

     

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

Selenium现在包含了htmlunit,所以你不再需要启动浏览器了。新的WebDriver api也非常易于使用。 第一个示例使用htmlunit驱动程序

编写适用于任何网站的解决方案将非常困难。每个导航菜单实现都非常独特。我已经和刮刀一起工作了很多,如果你知道你想要定位的网站,我就是这样做的。

通常,如果您分析导航菜单中使用的特定javascript,使用正则表达式来提取用于构建navmenu的整个变量集是相当容易的。我从来没有使用过Beautiful Soup,但是根据你的描述,它听起来似乎只适用于HTML元素而不能在脚本标签内部工作。

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

Mozenda 也是一款非常棒的工具。

您可以尝试使用 Scrape.it 中的开源屏幕抓取工具

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

请记住,javascript的幻想正在弄乱浏览器的内部DOM模型,并且对原始HTML没有任何作用。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top