Python auth_handler不为我工作
问题描述:
我一直在阅读关于Python的urllib2打开和读取受密码保护的目录的能力,但即使在查看文档中的示例以及StackOverflow中的示例后,我也无法获取脚本上班。Python auth_handler不为我工作
import urllib2
# Create an OpenerDirector with support for Basic HTTP Authentication...
auth_handler = urllib2.HTTPBasicAuthHandler()
auth_handler.add_password(realm=None,
uri='https://webfiles.duke.edu/',
user='someUserName',
passwd='thisIsntMyRealPassword')
opener = urllib2.build_opener(auth_handler)
# ...and install it globally so it can be used with urlopen.
urllib2.install_opener(opener)
socks = urllib2.urlopen('https://webfiles.duke.edu/?path=/afs/acpub/users/a')
print socks.read()
socks.close()
当我打印内容时,它会打印登录屏幕的内容,我尝试打开的网址会将您重定向到。任何人都知道这是为什么?
答
auth_handler
仅用于基本的HTTP身份验证。这里的网站包含一个HTML表单,所以您需要提交您的用户名/密码作为POST数据。
我建议您使用mechanize
模块,它可以简化您的登录。
简单的例子:
import mechanize
browser = mechanize.Browser()
browser.open('https://webfiles.duke.edu/?path=/afs/acpub/users/a')
browser.select_form(nr=0)
browser.form['user'] = 'username'
browser.form['pass'] = 'password'
req = browser.submit()
print req.read()