Python使用urllib对网页进行身份验证

时间:2011-12-24 04:46:47

标签: python parsing urllib

我已经阅读了其他帖子,但我认为我的情况有点独特。我正在尝试使用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()只返回一个空行。我真的被困在这里,谢谢你的帮助!

1 个答案:

答案 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