【问题标题】:Can you suggest any embeddable Javascript engine?你能推荐任何可嵌入的 Javascript 引擎吗?
【发布时间】:2011-03-04 19:14:53
【问题描述】:

我想开发一个应用程序,它会自动(基于某些逻辑)抓取网页。自动点击并在页面上发布以测试它们。把它想象成Selenium

对于简单的网页,这可以很容易地完成,我删除 HTML 代码,然后向服务器发出新的请求以获取下一页。问题是处理 Ajax 页面。 如何处理 HTML 中的 JS 代码?

把它分解,不同的部分会出现问题。 JS 引擎必须:-

  1. 解析 HTML 代码并发出服务器请求以获取引用的外部 JS 文件。可以提供一个钩子让用户代码为引擎获取它。
  2. 创建一个 HTML 元素的 DOM 树,就像在浏览器中所做的那样,让用户代码访问和操作它们。
  3. 让用户代码挂钩到 JS 事件。

典型的 JS 代码执行以下任务:-

  1. 访问 DOM 元素。
  2. 操作现有的 DOM 元素。

    a.这可以是装饰性的(比如改变高度等)用户代码对此不感兴趣,这将非常困难,因为它需要一个布局引擎。

    b.这可以是对属性的操作。用户代码会对此感兴趣。

  3. 添加新的 DOM 元素。

  4. 为 Ajax 发出 Http 请求。

你能给我任何我可以用来实现所有这些的嵌入式 JS 引擎吗?我选择的语言是 Java,但 C/C++ 或 Python 也可以。我不确定,但Mozilla Rhino 是否符合上述要求?

【问题讨论】:

  • 如果我把它想象成 Selenium,我还不如直接使用 Selenium...
  • 也许吧。如果 Selenium 在我入伍时可以控制 JS,那么我的下一个问题会做到吗?

标签: java javascript embedding


【解决方案1】:

看看HtmlUnit

【讨论】:

  • 发现更多:在 Python 中 - (1) wiki.python.org/moin/WebBrowserProgramming(部分:围绕 Web“库”和浏览器技术的 Python 包装器)(2) berkelium.org。将需要找出哪个足够成熟。 HtmlUnit 有多好?
  • HtmlUnit 相当成熟。我个人已经用它做了几个项目并且取得了很好的效果。
【解决方案2】:

我们将Cobra 项目用于一些我们需要检索网页并执行其中的javascript 的工作。不知道您是否可以根据需要调整项目。

【讨论】:

  • Cobra 的渲染看起来相当原始。
猜你喜欢
  • 2010-09-25
  • 2011-12-08
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 2012-01-09
  • 2011-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多