2012-01-17 103 views
5

这是我在用Python编程第一次的经验,我试图登录到this 网页。经过四处搜寻,我发现很多人建议使用mechanize。只是要确保我的设置正确的事情之前,我得到的代码,我从网上下载的网站mechanize拉链,有我的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() 

从浏览的网页,我相信用户ID /密码都为形式的正确名称的来源。当我在IDLE运行该脚本,我收到了一堆错误,包括超时错误和机器人的错误。完整回溯: enter image description here 我不太确定我应该期待什么或者即使代码工作。登录是为我的学校电子邮件,它也有类文件夹。我试图完成的最终游戏是当我登录到我的帐户时,我想解析一些文件夹以获取信息并将它们存储在一个文件中,该文件稍后可以转换为json或RSS提要,但是这样会更加糟糕这条道路对Python有了更好的理解,只是试图让我更清楚地知道我想完成什么。

+0

您应该使用'pip'安装机械化。 – Acorn 2012-01-17 15:05:29

+0

“我收到了一堆错误,包括超时错误和机器人的错误。”不是很有帮助。提供完整的追溯。 – 2012-01-17 15:07:54

+0

您可能还需要使用'CookieJar'存储的cookie。否则,您的登录对'mechanize.Browser'对象没有任何影响。 – 2012-01-17 15:09:33

回答

4

的问题是,机械化是尊重的robots.txt

您必须将其关闭。

解决方案:

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

编辑:看来,该网站正在使用某种形式所通过JavaScript产生额外的POST值 的。这可能是一个很难重新创建自己,检查页面的来源,看看发生了什么。 正在发送的实际POST值:

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

的副本解决了所有的错误。但是现在脚本在我运行后就没有显示任何信息。我觉得它应该写一个test.html文件到目录,但没有。 – Nick 2012-01-17 15:19:52