¿Completar javascript con python?

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()

preguntado el 03 de mayo de 12 a las 20:05

¿Está tratando de extraer JavaScript de una página web analizando el HTML con Python? No queda muy claro en tu pregunta. -

Solo estoy interesado en BMW, por lo tanto, quiero filtrar mis resultados antes de intentar analizar el html:

Me gustaría aprovechar la oportunidad de vincular a la respuesta más votada en la historia de SO! -

@YatharthROCK... Mi pregunta no se trata de analizar -

2 Respuestas

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

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 or haz tu propia pregunta.