Módulo para automatizar tareas web

Arnau Sanchez pyarnau en gmail.com
Sab Jul 25 12:17:34 CEST 2009


Buenas,

Hace ya un tiempo que ando buscando un módulo Python que me permita simular un 
navegador web con soporte para Javascript/AJAX. Hasta ahora, siempre que lo he 
necesitado, he tirado de urllib2 + BeautifulSoup, pero la cantidad de páginas en 
las que necesitas Javascript ó AJAX va creciendo sin remedio... si le dedicas 
suficiente esfuerzo (y alguna vez lo he hecho) puedes analizar el HTML, parsear 
el código Javascript, mandárselo a Spidermonkey (intérprete Javascript), etc, 
pero el proceso es extremadamente tedioso (sin contar que cualquier cambio en el 
código de la página te tira abajo el invento).

Si no voy errado, librerías como mechanize, twill, scrapy y compañía no soportan 
Javascript (bueno, scrapy parece que usa spidermonkey, pero fui incapaz de 
encontrar documentación o ejemplos al respecto)

Al final todos los caminos parecen llevar a librerías que controlan un navegador 
(no me atrae la idea) o a Selenium (http://selenium.openqa.org/). Pero por mucho 
que Selenium se pueda usar con Python, no quiero depender de la máquina virtual 
Java, y a ser posible también querría evitar un esquema cliente/servidor. Lo 
ideal sería una librería Python (multiplataforma) que importes, uses y cierres, 
sin mayor historia, que sirva tanto de crawler como de librería de testing. Algo 
que, en fin, te permitiera hacer cosas como éstas:

browser = Browser()
browser.load("http://server.org")
browser.fill("input[name=user]", "myuser")
browser.fill("input[name=password]", "mypassword")
browser.click("input[name=send]")
html = browser.get_html()
...

Añadiendo al lote jquery (para el control Javascript) y BeautifulSoup/lxml/ 
pyquery/... (para parsear el HTML) creo que quedaría algo bastante potente. He 
empezado a hacer algunas pruebas con pyQtWebKit (http://webkit.org/, 
http://trac.webkit.org/wiki/QtWebKit) y los resultados son muy prometedores. Qt 
no deja de ser una librería de tamaño considerable, pero creo que la dependencia 
sería asumible (y las ventajas de tener a tu disposición el framework Qt y 
WebKit, evidentes)

En fin, después de todo este rollo la pregunta es: ¿puede resultar interesante 
dedicarle tiempo a este proyecto? ¿aporta algo a lo ya existente?

saludos,
arnau

-- 
Desarrollador freelance
http://www.arnau-sanchez.com
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es