使用Python 3.1提交登录表单

问题描述:

我想通过使用Python 3.1.3脚本登录本网站:http://www.artofproblemsolving.com/Forum/ucp.php?mode=login。当时,我有这样的:使用Python 3.1提交登录表单

import webbrowser 
import urllib.request 
import cgi 
import cgitb 
import urllib.parse 
import hashlib 
import http.cookiejar 

p = urllib.parse.urlencode({'username':'MYUSERNAME','password':"MYPASSWORD"}) 

cj = http.cookiejar.CookieJar() 
o = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj)) 
urllib.request.install_opener(o) 

f = o.open('http://www.artofproblemsolving.com/Forum/ucp.php?mode=login', p) 
data = f.read() 
f.close() 
htm = open("file1.html", "w") 
htm.write(str(data)) 
htm.close 

f = o.open('http://www.artofproblemsolving.com/PAGEFORWHICHLOGINISREQUIRED') 
data = f.read() 
f.close() 
htm = open("file2.html", "w") 
htm.write(str(data)) 
htm.close 

print('fin') 

然而,当我运行此代码,包含的file1.html登录表单本身(没有消息)和file2.html包含在网页“你是不是在登录”。

有人能告诉我我做错了什么吗?对不起我的能力不足,我对Python很陌生。先谢谢你!

P.S.它可能涉及MD5哈希密码?我一直在与hashlib图书馆合作,并没有多少运气。如果是这样的话,有人可以请解释我将如何去散列我的密码吗?

当我提交此表单时,登录按钮被提交为&login=Login。也许这种形式要求你也提交?

+0

是的,那是问题所在。谢谢! – user595531 2011-01-30 14:56:24

使用Mechanize可能会好很多。它对表单提交特别有用。