可以解释JavaScript的Web爬虫

use*_*662 18 javascript web-crawler

我想编写一个可以解释JavaScript的网络爬虫.基本上它是一个Java或PHP程序,它将URL作为输入并输出DOM树,类似于Firebug HTML窗口中的输出.最好的例子是Kayak.com,当您查看源代码时,您无法在浏览器上看到生成的DOM,但可以通过Firebug保存生成的HTML.

我该怎么做呢?有哪些工具可以帮助我?

tok*_*and 6

Ruby的Capybara是一个集成测试库,但它也可以用来编写独立的Web爬虫.鉴于它使用像Selenium或无头WebKit这样的后端,它可以解释开箱即用的javascript:

require 'capybara/dsl'
require 'capybara-webkit'

include Capybara::DSL
Capybara.current_driver = :webkit
Capybara.app_host = "http://www.google.com"
page.visit("/")
puts(page.html)
Run Code Online (Sandbox Code Playgroud)


Jef*_*eff 5

我一直在使用HtmlUnit(Java).这最初是为单元测试页面设计的.它不是完美的javascript,但它在我的有限使用中没有让我失望.根据该站点,它可以在合理的程度上运行以下JS框架:

  • jQuery 1.2.6
  • MochiKit 1.4.1
  • GWT 2.0.0
  • Sarissa 0.9.9.3
  • MooTools 1.2.1
  • 原型1.6.0
  • Ext JS 2.2
  • Dojo 1.0.2
  • YUI 2.3.0


tho*_*ter 2

与 PHP 相比,您在 Java 方面更有可能取得成功。Java 有一个预先存在的 Javascript 解释器,称为Rhino。这是一个参考实现,并且有详细记录。

Rhino 在许多现有的 Java 应用程序中使用,以在应用程序内提供 Javascript 脚本编写能力。我还听说它用于协助在 Javascript 中执行自动化测试。

我还知道 Java 包含可以解析和呈现 HTML 的代码,尽管比我更了解 Java 的人可能可以在这方面提供更多建议。我并不否认要实现这样的目标是非常困难的;您实际上会重新实现浏览器的很多功能。