2009-12-16 11 views
14

Quiero hacer una búsqueda de pantalla en un sitio web que usa JavaScript.Programmatic Python Browser con JavaScript

Hay mechanize, el navegador web programático para Python. Sin embargo, (comprensiblemente) no interpreta javascript. ¿Hay algún navegador programático para Python que lo haga? Si no, ¿hay alguna implementación de JavaScript en Python que pueda usar para intentar crear una?

Respuesta

11

Puede ser mejor utilizar una herramienta como Selenium para automatizar el raspado con un navegador web, por lo que el JS se ejecuta y la página se representa igual que para un usuario real.

2

También podría intentar definir Chickenfoot activadores de página en las páginas en cuestión, ejecutando las operaciones que desee en la página y guardando los resultados de la operación en un archivo local, y llamando a Firefox desde la línea de comando dentro de su programa, seguido leyendo el archivo.

7

El paquete PyV8 muy bien envuelve Google's V8 Javascript engine para Python. Es particularmente agradable porque no solo puedes llamar desde Python a código Javascript, sino que puedes devolver la llamada desde JavaScript al código Python. Esto hace que sea bastante sencillo implementar los objetos habituales suministrados por el navegador (es decir, todo en el espacio de nombres global de JavaScript: "ventana", "documento", etc.), lo que tendría que hacer si fuera a hacer una cosa de emulador de navegador Python compatible con Javascript, posiblemente al conectar esto con mechanize.

1

recomiendo que eche un vistazo a algunas de las opciones disponibles en http://wiki.python.org/moin/WebBrowserProgramming - sorprendentemente esto viene a ser una pregunta común (he encontrado tres en stackoverflow hoy, buscando las palabras "navegador de python" en Google). si haces lo mismo, encontrarás las otras respuestas que di.

4

También hay spynner "un módulo de navegador web programática con estado para Python con soporte Javascript/AJAX basado en el marco QtWebKit": http://code.google.com/p/spynner/

+2

Ahora se movió a GitHub: https://github.com/makinacorpus/spynner –

5

Mi favorito es PyPhantomJS. Está escrito usando Python y PyQt4. Es completamente sin cabeza y puedes controlarlo completamente desde JavaScript.

Sin embargo, si realmente quiere ver la página, puede usar QWebView desde PyQt4 también.

+0

Esto es realmente impresionante. Gracias. – jdi

+1

Desafortunadamente el mantenedor del proyecto ya no puede mantener el proyecto. Pero aún será compatible con la versión 1.4.0. Puede cambiar a [PhantomJS] (http://code.google.com/p/phantomjs/) sin pérdida de funcionalidad (a excepción de todas las características increíbles y nuevas que PyPhantomJS tenía en comparación, como el soporte de complementos ....) . Están buscando a otra persona para hacerse cargo del mantenimiento (desarrollo del núcleo), así que con suerte no desaparecerá. :) –