Причина, по которой я получил AttributeError, была в том, что я использовал OpenDNS.Очевидно, даже когда вы передаете поддельный URL, OpenDNS обрабатывает его так, как будто он существует.Поэтому после переключения на DNS-сервер Googles я получаю ожидаемый результат:
[Errno -2] Name or service not known
Также я должен упомянуть трассировку, полученную мной для запуска этого кода, которая включает все, кроме try и кроме
from urllib2 import Request, urlopen, URLError, HTTPError
req = Request('http://www.pretend_server.com')
urlopen(req)
это
Traceback (most recent call last):
File "urlerror.py", line 5, in <module>
urlopen(req)
File "/usr/lib/python2.6/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.6/urllib2.py", line 397, in open
response = meth(req, response)
File "/usr/lib/python2.6/urllib2.py", line 510, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.6/urllib2.py", line 435, in error
return self._call_chain(*args)
File "/usr/lib/python2.6/urllib2.py", line 369, in _call_chain
result = func(*args)
File "/usr/lib/python2.6/urllib2.py", line 518, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found
какой добрый нежный (горе) человек?из IRC #python сказал мне, что это очень странно, а затем спросил, использую ли я OpenDNS, на что я ответил да.Поэтому они предложили мне перейти на Google, что я и начал делать.