我想编写一个可以解释 JavaScript 的网络爬虫。基本上它是一个 Java 或 PHP 程序,它以 URL 作为输入并输出类似于 Firebug HTML 窗口中输出的 DOM 树。最好的例子是 Kayak.com,当您“查看源代码”时,您看不到在浏览器上显示的结果 DOM,但可以通过 Firebug 保存结果 HTML。
我该怎么做呢?有哪些工具可以帮助我?
我想编写一个可以解释 JavaScript 的网络爬虫。基本上它是一个 Java 或 PHP 程序,它以 URL 作为输入并输出类似于 Firebug HTML 窗口中输出的 DOM 树。最好的例子是 Kayak.com,当您“查看源代码”时,您看不到在浏览器上显示的结果 DOM,但可以通过 Firebug 保存结果 HTML。
我该怎么做呢?有哪些工具可以帮助我?
Ruby 的Capybara是一个集成测试库,但它也可用于编写独立的网络爬虫。鉴于它使用 Selenium 或 Headless 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)
我一直在使用HtmlUnit (Java)。这最初是为单元测试页面设计的。它不是完美的 javascript,但在我有限的使用中它并没有让我失望。根据该站点,它可以在合理的程度上运行以下 JS 框架:
使用 Java 比使用 PHP 更有可能取得成功。有一个预先存在的 Java Javascript 解释器,称为Rhino。这是一个参考实现,并且有据可查。
Rhino 用于许多现有的 Java 应用程序,以在应用程序中提供 Javascript 脚本功能。我也听说过它用于协助在 Javascript 中执行自动化测试。
我也知道 Java 包含可以解析和呈现 HTML 的代码,尽管比我更了解 Java 的人可能会在这方面提供更多建议。我并不否认实现这样的目标非常困难;你基本上会重新实现浏览器所做的很多事情。
你可以使用 Mozilla 的渲染引擎 Gecko:
看看这里:http : //snippets.scrapy.org/snippets/22/ 这是一个 python 屏幕抓取和网络爬行框架,与打开页面的 webdrivers 一起使用,呈现你需要的所有东西,并为你提供“捕获”的可能性" 任何你想要的页面通过