我已经阅读了其他帖子,但我认为我的情况有点独特。我正在尝试使用python从学校的家庭访问中心网站上读取我的成绩,但我认为他们编程的方式有一些特殊的东西,这是我正在使用的代码:
import urllib
def WebLogin(password):
params = urllib.urlencode(
{'txtLogin': username,
'txtPassword': password })
f = urllib.urlopen("http://home.tamdistrict.org/homeaccess/Student/Assignments.aspx", params)
if "The following errors occurred while attempting to log in:" in f.read():
print "Login failed."
print f.read()
else:
print "Correct!"
print f.read()
无论我输入什么用户名和密码,它总是打印“正确”。每个f.read()只返回一个空行。我真的被困在这里,谢谢你的帮助!
答案 0 :(得分:3)
urlopen
返回类似文件的对象。特别是,您只能调用read()
一次(没有参数 - 您可以通过将大小传递给read
来读取块,但是ya) - 后续调用read()
将返回None
因为你已经筋疲力尽了(与常规文件对象不同,没有seek
方法)。您应该将结果存储在变量中。
content = f.read()
if "The following errors occurred while attempting to log in:" in content:
print "Login failed."
print content
else:
print "Correct!"
print content