2010-11-21 5 views
3

Kennt jemand einen kleinen, schnellen, Javascript-Emulator mit DOM-Layer-Unterstützung? in C/C++?Javascript Emulator

Das Problem: brauche ich rudimentäre Unterstützung für Javascript in einem Crawler Anwendung, und frage mich, ob es irgendwelche anderen Optionen außer ist:

a) Die Integration von WebKit (ohne Kopf) (verlangsamt) enorm kriecht nach unten. b) Integration von SpiderMonkey und Schreiben der DOM-Ebene selbst (nicht auf diese Option, nicht sicher, ob es sich lohnt, Geschwindigkeit).

Weitere Optionen?

Danke!

+0

[Web-Crawler, kann interpretiere Javascript ] (http://stackoverflow.com/questions/2670082/web-crawler-that-can-interpret-javascript) und [Erstellen eines Web-Crawlers - mit Webkit-Paketen ] (http://stackoverflow.com/questions/162181/building-a-web-crawler-using-webkit-packages) sind ähnliche Fragen. Aber keine der Antworten ist besonders detailliert. –

Antwort

2

Ich stimme für WebKit (oder einen anderen vorhandenen Code). Warum sollte man das Rad neu erfinden, besonders wenn das Rad wirklich schick ist, kompliziert, hat Jahre in der Entwicklung verbracht.

Wenn Sie wirklich wollten, könnten Sie Code schreiben, der zuerst nach Javascript sucht, damit Sie nur die Jobs weitergeben, die sie brauchen. Schreiben Sie dann Filter für allgemeine Werbenetzwerke und Analysepakete, die ignoriert werden sollen. Wenn ich es wäre, wäre ich lieber im Einklang damit, wie ich krabbele.

Denken Sie auch nicht, dass Sie nur rudimentären Unterstützung benötigen, da es einige wirklich flippige Websites gibt, die eine Tonne DOM verändern. Wenn Sie erwarten, dass Ihr Crawling zuverlässig ist, sollten Sie darauf vorbereitet sein, die Unterstützung der Browser zu unterstützen. Der einfachste Weg ist, den gleichen Code zu verwenden, den die Browser verwenden.

+0

Außer, dass die Engines selbst kein DOM bereitstellen; Sie verlassen sich auf den Browser, um dies zu tun. –

+0

@Ignacio Vazquez-Abrams, guter Punkt. – Brad

+0

@Ignacio, WebKit ist nicht nur die JavaScript-Engine (das ist JavaScriptCore). Es enthält WebCore und JavaScriptCore. WebCore verfügt über die DOM-Funktionalität. –

0

Korrektur: V8 nicht unterstützt DOM, nur Sie JavaScript, um so nicht das, was Sie suchen ...

V8:

+0

Aus dem Link: "Das DOM wird jedoch normalerweise nicht von der JavaScript-Engine, sondern von einem Browser bereitgestellt. Das Gleiche gilt für V8 - Google Chrome stellt das DOM bereit." –

+0

V8 hat keine Unterstützung für DOM-Layer, afaik. –

+0

@Ignacio, @John Ich habe den DOM Teil nicht verstanden - danke Jungs! Ich habe den Beitrag korrigiert. –