【问题标题】:Javascript EmulatorJavascript 模拟器
【发布时间】:2011-05-13 07:01:44
【问题描述】:

有人知道支持 DOM 层的小型、快速、javascript 模拟器吗?在 C/C++ 中?

问题: 我需要在爬虫应用程序中对 javascript 提供基本支持,并且想知道是否还有其他选项:

a) 集成 WebKit(无头)(极大地减慢了爬行速度)。 b) 集成 SpiderMonkey 并自己编写 DOM 层(不期待这个选项,不确定它是否值得,速度明智)。

还有其他选择吗?

谢谢!

【问题讨论】:

标签: javascript c++ c emulation


【解决方案1】:

投我对 WebKit(或其他一些现有代码)的投票。为什么要费心重新发明轮子,尤其是当轮子真的很花哨、很复杂、已经花了很多年的时间来开发的时候。

如果您真的想要,您可以先编写一些检查 javascript 的代码,这样您就只会传递需要它的工作。然后,为常见的广告网络和分析包编写过滤器以忽略。不过如果是我,我宁愿与我的爬行方式保持一致。

此外,不要认为您只需要基本的支持,因为有一些非常时髦的网站可以进行大量的 DOM 更改。如果您希望您的抓取可靠,请准备好支持浏览器支持的内容。最简单的方法是使用与浏览器相同的代码。

【讨论】:

  • 除了引擎本身不提供DOM;他们依靠浏览器来做到这一点。
  • @Ignacio,WebKit 不仅仅是 JavaScript 引擎(即 JavaScriptCore)。它包括 WebCore 和 JavaScriptCore。 WebCore 具有 DOM 功能。
  • @Matthew:当然,但他说“最简单的方法是使用浏览器使用的引擎之一”。这是错误的,因为引擎本身通常不提供 DOM 支持。
  • @Ignacio,我用不太具体的语言更新了我的帖子,以免混淆。
  • @Ignacio,JavaScript 引擎不提供 DOM 支持。但是布局引擎(WebKit 包括)可以,并且它被浏览器使用。 Gecko 是另一个候选布局引擎,也被浏览器使用。
【解决方案2】:

更正:V8 不支持 DOM,只支持 JavaScript,所以不是您想要的...

V8:

【讨论】:

  • 来自链接:“但是,DOM 通常不是由 JavaScript 引擎提供,而是由浏览器提供。V8 也是如此 - Google Chrome 提供了 DOM。”
  • V8 不支持 DOM 层,afaik。
  • @Ignacio, @John 我没看懂 DOM 部分——谢谢大家!我更正了帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-06
  • 2012-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多