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