我想使用 urllib2 访问经过身份验证的页面。我希望有一个黑客可以直接做到这一点。就像是:
urllib2.urlopen('http://username:pwd@server/page')
如果没有,我该如何使用身份验证?
我想使用 urllib2 访问经过身份验证的页面。我希望有一个黑客可以直接做到这一点。就像是:
urllib2.urlopen('http://username:pwd@server/page')
如果没有,我该如何使用身份验证?
这取决于所使用的身份验证类型。
AFAIK,没有一种简单的方法可以做到这一点。基本上,您发出请求,服务器以所需的 401 授权响应,urllib2 将其转换为异常。
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python25\lib\urllib2.py", line 124, in urlopen
return _opener.open(url, data)
File "C:\Python25\lib\urllib2.py", line 387, in open
response = meth(req, response)
File "C:\Python25\lib\urllib2.py", line 498, in http_response
'http', request, response, code, msg, hdrs)
File "C:\Python25\lib\urllib2.py", line 425, in error
return self._call_chain(*args)
File "C:\Python25\lib\urllib2.py", line 360, in _call_chain
result = func(*args)
File "C:\Python25\lib\urllib2.py", line 506, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 401: Authorization Required
您必须捕获这个异常,创建一个 urllib2.HTTPPasswordManager 对象,将用户名和密码添加到 HTTPPasswordManager,创建一个 urllib2.HTTPBasicAuthHandler 对象,创建一个 opener 对象,最后使用 opener 获取 url。此处提供代码和教程:http ://www.voidspace.org.uk/python/articles/urllib2.shtml#id5