使用mechanize登录网页

Nic*_*ick 5 python mechanize

这是我用Python编程的第一次经历,我正在尝试登录这个 网页.搜索后我发现很多人建议使用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()
Run Code Online (Sandbox Code Playgroud)

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

Uku*_*kit 4

问题是 Mechanize 尊重 robots.txt

你必须把它关掉。

解决方案:

mech = mechanize.Browser()
// needs to be set before you call open
mech.set_handle_robots(False)
Run Code Online (Sandbox Code Playgroud)

编辑:该网站似乎正在使用某种通过 Javascript 生成的附加 POST 值。重新创建自己可能会很痛苦,请检查页面的源代码以了解发生了什么。实际发送的 POST 值:

challenge   [a14b1f67-11edcc01]
charset UTF-8
login   Login
origurl /Login/
password    
savedpw 0
sha1    3f77d1e8c2ab0470ef8005a85f5f9c0d7aeedba6
userid  sdsads
Run Code Online (Sandbox Code Playgroud)