¿Completar javascript con python?
Frecuentes
Visto 918 veces
1
Estoy tratando de analizar una página html, pero necesito filtrar los resultados antes de analizar la página.
Por ejemplo, 'http://www.ksl.com/index.php?nid=443' es una lista clasificada de automóviles en Utah. En lugar de analizar TODOS los autos, me gustaría filtrarlo primero (es decir, encontrar todos los BMW) y luego analizar solo esas páginas. ¿Es posible completar un formulario de javascript con python?
Esto es lo que tengo hasta ahora:
import urllib
content = urllib.urlopen('http://www.ksl.com/index.php?nid=443').read()
f = open('/var/www/bmw.html',"w")
f.write(content)
f.close()
2 Respuestas
2
Esta es la forma de hacerlo. Primero descargue la página, raspe para encontrar los modelos que está buscando, luego puede obtener enlaces a las nuevas páginas para raspar. No hay necesidad de javascript aquí. Este modelo y la documentación de BeautifulSoup lo pondrán en marcha.
from BeautifulSoup import BeautifulSoup
import urllib2
base_url = 'http://www.ksl.com'
url = base_url + '/index.php?nid=443'
model = "Honda" # this is the name of the model to look for
# Load the page and process with BeautifulSoup
handle = urllib2.urlopen(url)
html = handle.read()
soup = BeautifulSoup(html)
# Collect all the ad detail boxes from the page
divs = soup.findAll(attrs={"class" : "detailBox"})
# For each ad, get the title
# if it contains the word "Honda", get the link
for div in divs:
title = div.find(attrs={"class" : "adTitle"}).text
if model in title:
link = div.find(attrs={"class" : "listlink"})["href"]
link = base_url + link
# Now you have a link that you can download and scrape
print title, link
else:
print "No match: ", title
Al momento de responder, este fragmento de código busca modelos de Honda y devuelve lo siguiente:
1995- Honda Prelude http://www.ksl.com/index.php?sid=0&nid=443&tab=list/view&ad=8817797
No match: 1994- Ford Escort
No match: 2006- Land Rover Range Rover Sport
No match: 2006- Nissan Maxima
No match: 1957- Volvo 544
No match: 1996- Subaru Legacy
No match: 2005- Mazda Mazda6
No match: 1995- Chevrolet Monte Carlo
2002- Honda Accord http://www.ksl.com/index.php?sid=0&nid=443&tab=list/view&ad=8817784
No match: 2004- Chevrolet Suburban (Chevrolet)
1998- Honda Civic http://www.ksl.com/index.php?sid=0&nid=443&tab=list/view&ad=8817779
No match: 2004- Nissan Titan
2001- Honda Accord http://www.ksl.com/index.php?sid=0&nid=443&tab=list/view&ad=8817770
No match: 1999- GMC Yukon
No match: 2007- Toyota Tacoma
contestado el 03 de mayo de 12 a las 21:05
esa es una opción pero, además de este ejemplo específico, quería saber cómo hacer una consulta de javascript con python para mi comprensión general: usuario_78361084
Supongo que depende de para qué lo uses. Un numero de Las bibliotecas de Python a Javascript se incluyen aquí y pueden ser buenas pistas. En otra pista completamente, te puede interesar Selenio que tiene una biblioteca de Python para automatizar la navegación/pruebas web, o el módulo de mecanizado para llenar formularios...? - dédalo
-1
Si está usando Python, Hermosa sopa es lo que estás buscando.
contestado el 03 de mayo de 12 a las 20:05
Por supuesto. No se trata de javascript, sino de python, ya que estás copiando datos usando urllib en Python. - aldux
pero necesito filtrar los resultados antes de poder analizarlos con urllib en Python - usuario_78361084
Pero Beautifull Soup analizará y filtrará la página html para que no tengas que usar javascript para hacer eso. ¿Por qué quieres usar javascript? - aldux
Esa es mi pregunta... ¿cómo filtro los resultados? No vi nada en los documentos de la sopa hermosa sobre cómo hacer eso: usuario_78361084
Para muchos ejemplos y documentación, consulte esta página: crummy.com/software/BeautifulSoup/bs3/download/2.x/… - aldux
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas python or haz tu propia pregunta.
¿Está tratando de extraer JavaScript de una página web analizando el HTML con Python? No queda muy claro en tu pregunta. - MikeWyatt
Solo estoy interesado en BMW, por lo tanto, quiero filtrar mis resultados antes de intentar analizar el html: user_78361084
Me gustaría aprovechar la oportunidad de vincular a la respuesta más votada en la historia de SO! - Yatharth Agarwal
@YatharthROCK... Mi pregunta no se trata de analizar - user_78361084