使用mechanize登录网页

时间:2012-01-17 15:03:38

标签: python mechanize

这是我第一次使用Python编程,我正在尝试登录this 网页。搜索后我发现许多人建议使用mechanize。为了确保我在编写代码之前正确设置了东西,我从网站下载了mechanize zip并将我的python脚本放在解压缩的机械化文件夹中。

到目前为止,我使用了我发现的不同示例:

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

从查看网页来源我相信用户名/密码是表单的正确名称。当我在IDLE中运行脚本时,我收到一堆错误,包括超时错误和机器人错误。完整的追溯: enter image description here  即使代码有效,我也不确定我应该期待什么。登录是我的学校电子邮件,它也有类文件夹。我想要完成的最终游戏是,一旦我登录我的帐户,我想解析一些文件夹以获取信息,并将它们存储在一个文件中,以后可以转换为json或RSS feed,但这更进一步对Python有更好理解的道路,只是想更清楚地了解我想要实现的目标。

1 个答案:

答案 0 :(得分:4)

问题是Mechanize尊重robots.txt

你必须将其关闭。

解决方案:

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

编辑:该网站似乎正在使用某种其他POST值 通过Javascript生成的。这可能是重建自己的痛苦,检查页面的来源以查看正在发生的事情。 发送的实际POST值:

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