可以解释 JavaScript 的网络爬虫

IT技术 javascript web-crawler
2021-02-22 17:37:42

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

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

5个回答

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 框架:

  • jQuery 1.2.6
  • MochiKit 1.4.1
  • GWT 2.0.0
  • 莎丽莎 0.9.9.3
  • MooTools 1.2.1
  • 原型 1.6.0
  • 扩展JS 2.2
  • 道场 1.0.2
  • YUI 2.3.0
你必须使用java。虽然您可以尝试使用基于selenium的 PHP 解决方案。
2021-05-02 17:37:42
您是否必须了解 java 才能将其与 php 脚本一起使用?
2021-05-11 17:37:42

使用 Java 比使用 PHP 更有可能取得成功。有一个预先存在的 Java Javascript 解释器,称为Rhino这是一个参考实现,并且有据可查。

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

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

Java 还包括 HTML 解析/呈现能力。比我更了解 Java 的人可能能够提供更好的建议 - 我的知识到此结束。
2021-05-05 17:37:42
嗨 thomasrutter,谢谢你的指点,但我猜 rhino 是一个 JavaScript 引擎,可能我需要使用 Rhino 作为 JavaScript 引擎构建一个原型浏览器来抓取 JavaScript 重磅页面。如果我错了,请纠正我
2021-05-15 17:37:42

你可以使用 Mozilla 的渲染引擎 Gecko:

https://developer.mozilla.org/en/Gecko

谷歌浏览器的 v8 也可能是这里的一个选项,code.google.com/p/ v8
2021-05-12 17:37:42

看看这里:http : //snippets.scrapy.org/snippets/22/ 这是一个 python 屏幕抓取和网络爬行框架,与打开页面的 webdrivers 一起使用,呈现你需要的所有东西,并为你提供“捕获”的可能性" 任何你想要的页面通过