Ответ 1
Причина, по которой я получил атрибут AttributeError, заключалась в том, что я использовал OpenDNS. Очевидно, даже когда вы передаете фиктивный URL, OpenDNS рассматривает его так, как он существует. Поэтому после перехода на DNS-сервер Googles я получаю ожидаемый результат:
[Errno -2] Name or service not known
Также я должен упомянуть трассировку, которую я получил для запуска этого кода, который есть все, кроме try и except
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
какой добрый человек (wo)? от IRС#python сказал мне, что это очень странно, и затем спросил, использую ли я OpenDNS, на что я ответил "да". Поэтому они предложили мне переключить его на Google, который я и сделал.