0

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

感谢您的每一个回复。

4

1 回答 1

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
>>> 
于 2010-03-04T16:14:05.467 回答