2011-08-12 60 views
2

嗨,当我有很长的系列,我为了我取回我的程序(在Python V2.6)图像(例如,site.com/pic.jpg)的网址。我正在使用urllib.urlretreive()。有时URL会提示我输入用户名和密码。所以我放在urllib.urlretreive()在尝试/除了为了避免这些网址,但我仍然需要插入一个假的用户名和密码来提示错误,触发尝试/除了跳过该网址。有什么方法可以检测到有密码请求时自动跳过网址吗?这是一个很长的名单,我不想在这里等候的全部时间推进入偶尔...谢谢传感密码保护的网站在使用Python的urllib

+2

在许多情况下,您将能够从HTTP标头获取此信息。 –

回答

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如果用户名/密码不正确,但如果不需要它的服务器将忽略验证。

+0

什么是数据变量? –

+0

啊,对不起,那是你想要发送到服务器的任何数据(如果有的话)。如果你没有,你可以使用一个空字符串。 –