可以解释JavaScript的Web爬虫程序

可以解释JavaScript的Web爬虫程序,javascript,web-crawler,Javascript,Web Crawler,我想写一个可以解释JavaScript的网络爬虫。基本上,它是一个Java或PHP程序,以URL作为输入并输出DOM树,这与Firebug HTML窗口中的输出类似。最好的例子是Kayak.com,当您“查看源代码”时,您无法在浏览器上看到结果DOM,但可以通过Firebug保存结果HTML 我该怎么做呢?有哪些工具可以帮助我?您在Java方面比在PHP方面更有可能取得成功。有一个预先存在的Java Javascript解释器,名为。这是一个参考实现,并且有很好的文档记录 Rhino用于许多现有

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


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

您在Java方面比在PHP方面更有可能取得成功。有一个预先存在的Java Javascript解释器,名为。这是一个参考实现,并且有很好的文档记录

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

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

我一直在使用(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
  • Dojo1.0.2
  • YUI 2.3.0

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

Ruby是一个集成测试库,但它也可以用于编写独立的web爬虫程序。考虑到它使用像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)
请看这里:
这是一个python屏幕抓取和web爬行框架,与web驱动程序一起使用,它可以打开页面,呈现您需要的所有内容,并使您能够通过

Cool“捕获”页面中的任何内容。你的问题是什么?我想写一个网络爬虫程序,可以在我试图爬网的页面上执行JavaScript代码。例如,一些页面有JavaScript代码,用来自AJAX调用或JavaScript数组的数据填充页面。如果您在FireFox中打开这些页面并单击View->“页面源代码”,您将看不到在浏览器窗口中看到的完整HTML DOM。但是如果你安装了firebug插件,你可以打开firebug,点击HTML选项卡,右键点击调试窗口,点击“复制HTML”并将其粘贴到文本编辑器,你会看到由JavaScript代码生成的HTML DOM。基本上我想写一个以URL作为输入的程序,进入该页面,执行该页面上的任何JavaScript代码并返回结果页面。这个程序应该能够在Linux机器上运行。我之所以提出firebug,是因为firebug做的正是我想要的,但我想要一些能够自动化firebug所做的事情的工具或webkit。如果还不清楚,请告诉我。我认为背景相当清楚,但你仍然没有提出实际问题。你是在问这是否可能吗?您是否正在寻找一些库来在此基础上构建此功能?您是否需要自己构建这样的库的想法?您是想编写一个能够执行JS的webcrawler,还是想使用一个能够执行JS的(第三方)webcrawler?就你一直在说第一个,但似乎更多的是你实际上指的是第二个,希望得到我们的建议。嗨,thomasrutter,谢谢你的指点,但我想rhino是一个JavaScript引擎,我可能需要使用rhino作为JavaScript引擎构建一个原型浏览器来抓取JavaScript页面。如果我错了,请纠正我。Java还包括HTML解析/呈现功能。一些比我更了解Java的人可能会提出更好的建议-我的知识到此为止。Google Chrome的v8也可能是一个选项,你必须了解Java才能将其与php脚本一起使用吗?你必须将Java与之一起使用。尽管您可以尝试使用基于selenium的PHP解决方案。