2011-08-13 15 views
5

Estoy familiarizado con BeautifulSoup y urllib2 para raspar datos de una página web. Sin embargo, ¿qué pasa si un parámetro debe ingresarse en la página antes de que se devuelva el resultado que quiero raspar?¿Cómo puedo ingresar datos en una página web para raspar la salida resultante usando Python?

estoy tratando de obtener la distancia geográfica entre dos direcciones que utilizan este sitio: http://www.freemaptools.com/how-far-is-it-between.htm

Quiero ser capaz de ir a la página, introducir dos direcciones, haga clic en "Mostrar", y luego extraer el " Distancia como el Cuervo vuela "y" Distancia por transporte terrestre "valores y guardarlos en un diccionario.

¿Hay alguna forma de ingresar datos en una página web usando Python?

+1

Esto no responde su pregunta, sino su problema.Usé una extensión de Firefox llamada HttpFox para averiguar qué hizo el sitio web para calcular la distancia y resulta que usa la API de Google Maps. Puedes usarlo gratis; Consulte: http://code.google.com/apis/maps/documentation/directions/. Por ejemplo, ejecute lo siguiente en un intérprete de comandos de shell en Linux para obtener las instrucciones de JSON: curl "http://maps.googleapis.com/maps/api/directions/json?origin=london&destination=bristol&sensor=false" –

Respuesta

1

Sí! Pruebe mechanize para este tipo de tarea de eliminación de pantalla web.

1

Creo que también puedes usar PySide/PyQt, porque tienen un núcleo de buscador de qtwebkit, puedes controlar el navegador para abrir páginas, simular acciones humanas (llenar, hacer clic ...), luego raspar datos de páginas. FMiner es trabajar de esta manera, es un software de raspado web que desarrollé con PySide.

O puede probar phantomjs, es una biblioteca sencilla para controlar el navegador, pero no es javascript, no es lanzador de pitones.

0

Además de las respuestas ya dadas, simplemente puede hacer una solicitud en esa página. Con su navegador, siempre puede inspeccionar las conductas y acciones de la red (en Herramientas/Herramientas de desarrollo web) cuando interactúa con la página. P.ej. http://www.freemaptools.com/ajax/getaandb.php?a=Florida_Usa&b=New%20York_Usa&c=6052 -> solicitud de consulta para obtener la página de resultados que está esperando. Solicite esa página y elimine el campo que deseaba. En mi humilde opinión, las solicitudes de página son mucho más rápidas que el raspado de la pantalla (caso por caso).

Pero, por supuesto, siempre puedes hacer la exploración de pantalla/simulación del navegador también (Mechanize, Splinter) y usar navegadores sin cabeza (PhantomJS, etc.) o el navegador del navegador que quieras utilizar.

0

La consulta se pudo haber resuelto.

Puede usar Selenium WebDriver para este fin. Una página web puede interactuar usando el lenguaje de programación. Todas las operaciones se pueden realizar como si un usuario humano estuviera accediendo a la página web.

Cuestiones relacionadas