在python中使用urllib时感知密码保护的站点

时间:2011-08-12 15:57:16

标签: python error-handling urllib

您好我有很长一系列的图片网址(例如site.com/pic.jpg),我正在为我的程序检索(在Python v2.6中)。我正在使用urllib.urlretreive()。有时,网址会提示我输入用户名和密码。所以我将urllib.urlretreive()置于try / except以避免这些网址,但我仍然需要插入一个假的用户名和密码来提示触发try / except跳过该url的错误。当有密码请求并且自动跳过网址时,我有没有办法感觉到?这是一个非常长的列表,我不想在这里等待偶尔推进输入......谢谢

1 个答案:

答案 0 :(得分:2)

如果站点具有HTTP身份验证,则需要在请求中添加标头以插入用户名和密码(伪造或其他)。以下是使用urllib2

执行此操作的方法
import base64
import urllib2

headers = {'Authorization': 'Basic ' + base64.encodestring('[username]:[password]')}
req = urllib2.Request(url, data, headers)
resp = urllib2.urlopen(req).read()

如果用户名/密码不正确,将返回urllib2.HTTPError: HTTP Error 401: Unauthorized,但如果不需要,服务器将忽略身份验证。