|
Estoy escribiendo una aplicación Django que necesita recuperar páginas webs externas y parsearlas para extraer información. Para procesar el HTML utilizo BeautifulSoup, el problema está en que muchas páginas usan Javascript que altera el HTML, y en estos casos no se puede extraer la información estática que se recupera con la petición original. Estoy buscando una solución que permita ejecutar ese javascript y ver los cambios en el HTML. En principio asumo que hará falta un navegador web que interprete todo el javascript y realice las llamadas AJAX, y que se controle desde Python. Las mejores opciones por ahora parecen ser: |
|
La opción de Selenium es la más adecuada, sobre entornos Linux no necesita realmente un entorno gráfico, sinó algo que lo emule. Dále un vistazo al proyecto SST (http://testutils.org/sst/), ha desarrollado una capa sobre Selenium que te permite automatizar las tareas de una manera realmente sencilla. SST está pensado para tests, pero al ser un script Python puedes utilizarlo y modificarlo según tus necesidades. La documentación de instalación ya te indica los paquetes a instalar para ejecutarlo sin componente gráfica. Al estar basado en Selenium realmente ejecuta el navegador, por lo que no deberías tener problemas con el HTML generado por el Javascript, aunque a veces es un poco problemático ajustar tiempos de espera para que te dé el resultado esperado. ¿Alguna idea de cómo emular las X? O en otras palabras, arrancar Firefox sin tener entorno gráfico (léase en un servidor).
(29 Ene '12, 18:15)
haplo
2
Puedes arrancar la aplicación en un framebuffer virtual, Xvfb te permite esto. http://en.wikipedia.org/wiki/Xvfb Lo tienes disponible en debian/Ubuntu con ese nombre de paquete,
(29 Ene '12, 19:15)
joe di castro ♦♦
|