urllib忽略身份验证请求

时间:2010-03-04 15:51:26

标签: python urllib urlopen

我在创建使用URL的脚本时遇到了一些麻烦。我正在使用urllib.urlopen()来获取所需URL的内容。但其中一些URL需要身份验证。并且urlopen提示我输入我的用户名然后输入密码。 我需要的是忽略每个需要身份验证的URL,只需轻松跳过它并继续,有没有办法做到这一点? 我想知道捕获HTTPError异常,但事实上,异常是由urlopen()方法处理的,所以它不起作用。

感谢您的回复。

1 个答案:

答案 0 :(得分:1)

你对urllib2.HTTPError例外是对的:

  

exception urllib2.HTTPError

     

虽然是一个例外(URLError的子类),但HTTPError也可以作为一个非特殊的文件类返回值(与urlopen()返回的相同)。这在处理异常HTTP错误时很有用,,例如身份验证请求。

     

code

     

RFC 2616中定义的HTTP状态代码。此数值对应于在BaseHTTPServer.BaseHTTPRequestHandler.responses中找到的代码字典中找到的值。

异常的代码属性可用于验证是否需要身份验证 - 代码401。

>>> try: 
...     conn = urllib2.urlopen('http://www.example.com/admin')
...     # read conn and process data
... except urllib2.HTTPError, x:
...     print 'Ignoring', x.code
...     
Ignoring 401
>>>