Necesito rozar un sitio con python. Obtengo el código fuente html con el módulo urlib, pero también necesito raspar algún código html generado por una función javascript (que está incluida en la fuente html). Lo que hace que esto funcione "en" el sitio es que cuando presiona un botón, produce algún código html. ¿Cómo puedo "presionar" este botón con el código de Python? ¿Me puede ayudar el tratamiento? Capturé la solicitud POST con Firebug, pero cuando intento pasarla en la url obtengo un error 403. ¿Alguna sugerencia?scrape html generado por javascript con python
Respuesta
En Python, creo que Selenium 1.0 es el camino a seguir. Es una biblioteca que le permite controlar un navegador web real desde su idioma de elección.
Debe tener el navegador web en cuestión instalado en la máquina en la que se ejecuta su secuencia de comandos, pero parece ser la forma más confiable de interrogar mediante programación a sitios web que utilizan una gran cantidad de JavaScript.
Es hay una manera de hacerlo con las solicitudes y la hermosa sopa en sí? He estado usando solicitudes y funciona bien en cualquier otro caso pero esto. Por favor, avíseme si las solicitudes también pueden resolver esto. – Shaardool
@Shaardool: ¿resolver qué? ¿Scraping HTML generado en el navegador por JavaScript? No, para eso necesita algo que ejecute JavaScript para que pueda producir el HTML. Beautiful Soup no ejecuta JavaScript. –
gracias por la visión, ¿puede la Biblioteca de Solicitudes hacerlo?Funciona bien con las solicitudes de AJAX al servidor, pero quiero saber si puede funcionar con javascript que también crea HTML. Sin embargo, no encontré nada de eso en su documentación. – Shaardool
He tenido que hacer esto antes (en .NET) y básicamente vas a tener que alojar un navegador, hacer que haga clic en el botón, y luego consultar el DOM (modelo de objeto del documento) del navegador para obtener en el HTML generado.
Esto es definitivamente una de las desventajas de las aplicaciones web que se mueven hacia un enfoque Ajax/Javascript para generar HTML en el lado del cliente.
Uso webkit, que es el procesador de navegador detrás de Chrome y Safari. Hay Python bindings to webkit through Qt. Y aquí hay un completo example to execute JavaScript and extract the final HTML.
Dado que no hay una respuesta completa aquí, voy a seguir adelante y escribir una.
para raspar JS rindió páginas, necesitaremos un navegador que tiene un motor de JavaScript (IE, JavaScript renderizado)
Opciones como Mecanización, url2lib no funcionará ya que ¡NO soporte JavaScript
Así que aquí es lo que haces:
Configuración PhantomJS para funcionar con Selenium. Después de instalar las dependencias para ambos (consulte this), puede usar el siguiente código como ejemplo para recuperar el sitio web completamente procesado.
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get('http://jokes.cc.com/')
soupFromJokesCC = BeautifulSoup(driver.page_source) #page_source fetches page after rendering is complete
driver.save_screenshot('screen.png') # save a screenshot to disk
driver.quit()
- 1. cómo raspar html generado por javascript usando python?
- 2. Accediendo a html generado por Javascript con htmlunit -Java
- 3. Estilo HTML generado por Microsoft-Word
- 4. Node.JS scrape codificación?
- 5. Descargar js generado html con C#
- 6. Cambio formulario HTML ID generado por form_for carriles 3.1
- 7. Mejor práctica: limpieza HTML generado por el usuario
- 8. ¿Cómo incluyo el token CSRF de Django 1.2 en un formulario HTML generado por Javascript?
- 9. ¿Cómo ver "código HTML generado" en Firefox?
- 10. PHP Scrape Artículo Extracto como Legibilidad
- 11. Enviando generado dinámicamente archivo javascript
- 12. Python/web scrape/aspx: ¿es humanamente posible cuando no hay formularios?
- 13. Captura de HTML generado desde ASP.NET
- 14. Cargar plantilla HTML con JavaScript
- 15. Google App Engine - HTML generado en caché
- 16. Renderer liviano HTML con CSS en Python
- 17. Necesito un prettificador HTML basado en Java para limpiar el HTML generado por Velocity
- 18. Cómo acceder a la CSS contenido generado con JavaScript
- 19. agrupación/minificación ASP.NET: incluyendo Javascript generado dinámicamente
- 20. HTML generado para RichTextArea: ¿qué es #document?
- 21. getElementById no encuentra el control generado por ASP.net
- 22. Código HTML generado automáticamente por Paypal: ¿por qué la imagen de 1 píxel?
- 23. equals() generado por Eclipse: getOuterType()?
- 24. Infinity generado en el código python
- 25. Favicon generado dinámicamente
- 26. Html a la imagen en javascript o python
- 27. Python: ¿Procesamiento de Javascript con urllib2?
- 28. Adición de elementos HTML con JavaScript
- 29. Crear dinámicamente un formulario HTML con Javascript
- 30. ¿Cómo minimizar HTML con CSS y Javascript?
Excavando las direcciones ofuscadas fuera de las páginas web para las listas de correo? –
Respondí una pregunta similar sobre [Haga clic en un enlace javascript dentro de python?] (Http://stackoverflow.com/questions/5207948/click-on-a-javascript-link-within-python/5227031#5227031) –