使用Python 3.1提交登录表单

时间:2011-01-30 05:04:05

标签: python networking

我正在尝试使用Python 3.1.3脚本登录此网站:http://www.artofproblemsolving.com/Forum/ucp.php?mode=login。当时,我有这个:

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库,并没有太多运气。如果是这种情况,有人可以解释一下我将如何哈希密码?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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