2012-01-17 17 views
5

Esta es mi primera experiencia en programación con Python y estoy tratando de iniciar sesión en this página web. Después de buscar, encontré que muchas personas sugirieron usar mechanize. Solo para asegurarme de que configuro las cosas correctamente antes de obtener el código descargué el archivo zip mechanize del sitio web y tenía mi script python en la carpeta descomprimida mechanize.Uso de mechanize para iniciar sesión en una página web

tengo este código hasta ahora el uso de diferentes ejemplos que he encontrado:

import mechanize 

theurl = 'http://voyager.umeres.maine.edu/Login' 
mech = mechanize.Browser() 
mech.open(theurl) 

mech.select_form(nr=0) 
mech["userid"] = "MYUSERNAME" 
mech["password"] = "MYPASSWORD" 
results = mech.submit().read() 

f = file('test.html', 'w') 
f.write(results) 
f.close() 

De su análisis de la fuente de la página web Creo que el ID de usuario/contraseña son los nombres correctos de la forma. Cuando ejecuto el script en IDLE recibo un montón de errores que incluyen un error de tiempo de espera y un error de robot. El rastreo completo: enter image description here No estoy seguro de qué esperar tampoco, incluso si el código funciona. El inicio de sesión es para el correo electrónico de mi escuela, que también tiene carpetas de clase. Mi último juego para lo que intento lograr es que una vez que inicie sesión en mi cuenta, quiero analizar algunas carpetas para almacenar información y almacenarlas en un archivo que luego se puede convertir en json o RSS feed, pero esto está mucho más abajo. el camino con una comprensión mucho mejor de Python simplemente tratando de dar una idea más clara de lo que quiero lograr.

+0

Debe instalar mecanizar con 'pip'. – Acorn

+0

"Recibo un montón de errores, incluido un error de tiempo de espera y un error de robot". No es muy útil. Proporcione un rastreo completo. –

+0

Es posible que también necesite utilizar un 'CookieJar' para almacenar las cookies. De lo contrario, su inicio de sesión no tiene efecto en el objeto 'mecanize.Browser'. –

Respuesta

4

El problema es que Mechanize está respetando el robots.txt

Debe apagarlo.

Solución:

mech = mechanize.Browser() 
// needs to be set before you call open 
mech.set_handle_robots(False) 

Editar: parece que el sitio está utilizando algún tipo de valores posteriores adicionales que se generan a través de Javascript. Quizás sea un dolor recrearse, revise la fuente de la página para ver qué está pasando. Se envían valores de POST reales:

challenge [a14b1f67-11edcc01] 
charset UTF-8 
login Login 
origurl /Login/ 
password  
savedpw 0 
sha1 3f77d1e8c2ab0470ef8005a85f5f9c0d7aeedba6 
userid sdsads 
+0

Eso resolvió todos los errores. Pero ahora el script se instala allí después de ejecutarlo y no muestra ninguna información. Tengo la impresión de que debería escribir un archivo test.html en el directorio, pero no hay ninguno. – Nick

Cuestiones relacionadas