defer - raspar html generado por javascript con python
title html (5)
Como aquí no hay una respuesta completa, seguiré adelante y escribiré una.
Para eliminar las páginas procesadas con JS, necesitaremos un navegador que tenga un motor de JavaScript (ei, soporte de representación de JavaScript)
Opciones como Mecanizar , url2lib no funcionará ya que NO admiten JavaScript.
Así que aquí está lo que haces:
Configurar PhantomJS para ejecutar con Selenium . Después de instalar las dependencias para ambos (consulte this ), puede usar el siguiente código como ejemplo para obtener el sitio web completamente representado.
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()
Necesito raspar un sitio con python. Obtengo el código html de origen con el módulo urlib, pero también necesito raspar un código html generado por una función javascript (que se incluye en el código html). Lo que esta función hace "en" el sitio es que cuando se presiona un botón, se genera un código html. ¿Cómo puedo "presionar" este botón con el código de Python? ¿Scrapy puede ayudarme? Capturé la solicitud POST con firebug pero cuando intento pasarla en la url obtengo un error 403. ¿Alguna sugerencia?
En Python, creo que Selenium 1.0 es el camino a seguir. Es una biblioteca que le permite controlar un navegador web real desde el idioma que elija.
Debe tener el navegador web en cuestión instalado en la máquina en la que se ejecuta el script, pero parece que es la forma más confiable de interrogar de manera programática los sitios web que usan mucho JavaScript.
He tenido que hacer esto antes (en .NET) y básicamente tendrá que alojar un navegador, hacer que haga clic en el botón y luego interrogar al DOM (modelo de objeto de documento) del navegador para obtener el HTML generado. .
Este es definitivamente uno de los inconvenientes de las aplicaciones web que se dirigen hacia un enfoque Ajax / Javascript para generar el lado del cliente HTML.
Utilizo webkit, que es el renderizador del navegador detrás de Chrome y Safari. Hay enlaces de Python a webkit a través de Qt . Y aquí hay un ejemplo completo para ejecutar JavaScript y extraer el HTML final .