我想使用urllib2访问经过身份验证的页面。我希望有一个黑客直接做到这一点。类似的东西:
urllib2.urlopen('http://username:pwd@server/page')
如果没有,我该如何使用身份验证?
答案 0 :(得分:2)
这取决于使用的身份验证类型。
答案 1 :(得分:1)
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