2011-03-06 17 views
15

Estoy navegando por un sitio utilizando el módulo mechanize de python y tengo problemas para hacer clic en un enlace de JavaScript para la página siguiente. Leí un poco y la gente sugirió que necesitaba python-spidermonkey y DOMforms. Pude conseguir que los instalaran. No estoy seguro de la sintaxis para hacer clic en el enlace.Haga clic en un enlace javascript dentro de python?

Puedo identificar el código de la página como:

<a href="javascript:__doPostBack('ctl00$MainContent$gvSearchResults','Page$2')">2</a> 

¿Alguien sabe cómo hacer clic en él? o si tal vez hay otra herramienta.

Gracias

+0

¿No le bastaría con hacer clic normalmente? Si python-spidermonkey y DOMForms son buenos, simplemente funcionarían. –

+0

Lo estaba intentando pero es muy difícil encontrar ejemplos que funcionen. De hecho, no estoy seguro de cómo hacerlo. La mayoría de los comandos que encontré en el ejemplo tampoco funcionaron. He leído acerca de muchas personas que sugieren estas herramientas por su capacidad para manejar javascript pero el uso de los paquetes no es muy directo. – Lostsoul

+0

Si necesito tratar con JavaScript, evito mecanizar (o twill, que prefiero) y en su lugar usar algo como [Selenium] (http://seleniumhq.org) o [Splinter] (http: //splinter.cobrateam. información) (que es mi favorito entre los dos). – brandizzi

Respuesta

6

Principalmente uso HtmlUnit bajo jython para estos casos de uso. También publiqué un artículo simple sobre el tema: Web Scraping Ajax and Javascript sites.

+0

Gracias, estoy investigando esto ahora mismo. Para ser sincero, soy algo nuevo en la programación de OO y sigo intentando descubrir Java. Estaba evitando una solución de Java porque, si las cosas se estropeaban, no sabía qué tan bien podía solucionarlo. Me siento mejor con Python, pero esta solución se ve realmente bien, parece que puedo escribir scripts de Python y llamar a los scripts de Java para crear variables para pasar de un lado a otro. Tu sitio se mueve y parece que hay una buena porción de documentación/muestras de htmlunit. – Lostsoul

+0

Gracias Lostsoul. Creo que la combinación entre lenguajes como Python o Ruby (JRuby) con frameworks en Java da mucho poder. Java tiene algunos de los marcos más desarrollados pero son muchas veces complejos de usar de manera directa. –

0

la forma de llamar a __doPostBack('ctl00$MainContent$gvSearchResults','Page$'+pageid); (javascript método, a través de pitón-spidermonkey)

+0

Muchas gracias por su rápida respuesta n00b32. Soy muy nuevo en este spidermonkey y todavía estoy un poco confundido. ¿Cómo exactamente haría esto? No hay mucha documentación o scripts de muestra que pueda encontrar para spidermonkey. Básicamente, estoy en el punto donde importé mecanize y beautifulsoup y tengo una variable (soup1) que arregla todos los html rotos de la página. Puedo obtener el enlace de arriba en una variable, pero no estoy seguro de qué hacer después de eso, todavía estoy muy confundido. Sería grandioso tener un ejemplo o si podrías indicarme dónde aprender. ¡Gracias de nuevo! – Lostsoul

2

en lugar de luchar con el pitón-spidermonkey tratar webkit's qt python bindings.

Aquí hay un full example to execute JavaScript and extract the final HTML.

+0

Esto se ve muy interesante. Lo acabo de instalar y jugaré con él. Encontré un script de muestra y no mucha documentación sobre el uso del webkit. – Lostsoul

+1

agregó un ejemplo. Sí, lamentablemente es difícil encontrar muchos ejemplos al respecto. La mayoría de las personas usa Qt/Webkit a través de C++. – hoju

Cuestiones relacionadas