2008-09-24 9 views
17

Gibt es ein Python-Modul zum Rendern einer HTML-Seite mit Javascript und ein DOM-Objekt zurück zu bekommen?Python-Bibliothek zum Rendern von HTML und Javascript

Ich möchte eine Seite analysieren, die fast alle ihren Inhalt mit Javascript generiert.

+2

könnten Sie die Frage zu etwas wie "emulieren ein Browser-DOM in Python" - die aktuelle nicht wirklich die Frage widersprechen. –

Antwort

8

Die große Komplikation besteht darin, die vollständige Browserumgebung außerhalb eines Browsers zu emulieren. Sie können Stand-alone-Javascript-Interpreter wie Rhino und SpiderMonkey verwenden, um JavaScript-Code auszuführen, aber sie bieten keine vollständige browserähnliche Umgebung zum vollständigen Rendern einer Webseite.

Wenn ich ein Problem wie dieses lösen müsste, würde ich zuerst schauen, wie das Javascript die Seite rendert, es ist durchaus möglich, dass es Daten über AJAX holt und das verwendet, um die Seite zu rendern. Ich könnte dann Python-Bibliotheken wie simplejson und httplib2 verwenden, um die Daten direkt abzurufen und diese zu verwenden, was den Zugriff auf das DOM-Objekt negiert. Dies ist jedoch nur eine mögliche Situation, ich kenne das genaue Problem nicht, das Sie lösen.

Andere Optionen sind das von Łukasz erwähnte Selenium, irgendeine Art von Webkit-Embedded-Verrücktheit, irgendeine Art von Win32-Scripting-Verrücktheit oder schließlich eine pyxpcom-basierte Lösung (mit zusätzlicher Verrücktheit). All dies hat den Nachteil, dass Python so ziemlich mit einem voll funktionsfähigen Webbrowser arbeiten muss, der in Abhängigkeit von Ihrer Umgebung keine Option ist.

1

Sie können wahrscheinlich python-webkit dafür verwenden. Benötigt einen laufenden glib und GTK, aber das ist wahrscheinlich weniger problematisch als das Wrappen der Teile von webkit ohne glib.

Ich weiß nicht, ob es alles tut, was Sie brauchen, aber ich denke, Sie sollten es versuchen.

+0

Ich denke, pywebkitgtk kann nur die HTML-Seite rendern. Ist es möglich, die XML-Quelle nach dem Rendern zu erhalten? Es gibt nicht genug Dokumente dazu – cnu