2008-09-24 25 views
17

¿Hay algún módulo de python para renderizar una página HTML con javascript y recuperar un objeto DOM?Biblioteca de Python para renderizar HTML y Javascript

Quiero analizar una página que genera casi todo su contenido mediante javascript.

+2

podría retitular la pregunta a algo así como "emular un navegador DOM en python" - el actual realmente no refleja la pregunta. –

Respuesta

8

La gran complicación aquí es emular el entorno completo del navegador fuera de un navegador. Puede utilizar intérpretes independientes de javascript como Rhino y SpiderMonkey para ejecutar código JavaScript, pero no proporcionan un entorno completo como el navegador para renderizar una página web completa.

Si tuviera que resolver un problema como este, primero vería cómo el javascript está renderizando la página, es bastante posible que busque datos a través de AJAX y los utilice para representar la página. Podría usar bibliotecas de Python como simplejson y httplib2 para obtener directamente los datos y usarlos, anulando la necesidad de acceder al objeto DOM. Sin embargo, esa es solo una posible situación, no sé el problema exacto que estás resolviendo.

Otras opciones incluyen el selenio mencionado por Łukasz, algún tipo de locura web embebida, algún tipo de locura de script de IE win32 o, finalmente, una solución basada en pyxpcom (con locura añadida). Todos estos tienen el inconveniente de requerir un navegador web completamente en funcionamiento para que Python pueda jugar, lo que puede no ser una opción dependiendo de su entorno.

1

Probablemente pueda usar python-webkit para ello. Requiere un glib running y GTK, pero eso es probablemente menos problemático que envolver las partes de webkit sin glib.

No sé si hace todo lo que necesita, pero supongo que debe intentarlo.

+0

Creo que pywebkitgtk solo puede mostrar la página html. ¿Es posible obtener la fuente xml después de renderizarla? No hay suficientes documentos sobre eso – cnu

Cuestiones relacionadas