我正在尝试进一步学习Python,但我遇到了障碍。我无法让urllib2 / urllib正常工作。如果我这样做response = urllib2.urlopen('http://python.org/')
我会收到此错误:
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
response = urllib2.urlopen('http://python.org/')
File "C:\Python27\lib\urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "C:\Python27\lib\urllib2.py", line 400, in open
response = self._open(req, data)
File "C:\Python27\lib\urllib2.py", line 418, in _open
'_open', req)
File "C:\Python27\lib\urllib2.py", line 378, in _call_chain
result = func(*args)
File "C:\Python27\lib\urllib2.py", line 1207, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "C:\Python27\lib\urllib2.py", line 1177, in do_open
raise URLError(err)
URLError: <urlopen error [Errno 10060] A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond>
即使像URL = "http://173.194.75.94"
后跟f=urllib.urlopen(URL)
之类的内容也会出现同样的错误,因此它不是DNS问题。
我没有代理或防火墙。除了我的Windows默认防火墙,它一直被禁用。即便如此,我还是将python和pythonw.exe添加到了例外。
有任何线索如何解决这个问题?
答案 0 :(得分:1)
使用requests可以让您的生活更轻松;
In [1]: import requests
In [2]: pysite = requests.get('http://python.org/')
In [3]: pysite.status_code
Out[3]: 200
In [4]: pysite.ok
Out[4]: True
In [5]: pysite.text[0:40]
Out[5]: u'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML'
In [6]: pysite.error
In [7]: pysite.links
Out[7]: {}
In [8]: pysite.reason
Out[8]: 'OK'
当您尝试访问某个网站时,您仍会遇到例外情况。在您的网络上不存在或被阻止:
In [3]: foobar = requests.get('http://foo.bar/')
---------------------------------------------------------------------------
ConnectionError Traceback (most recent call last)
<ipython-input-3-0917ff568fd4> in <module>()
----> 1 foobar = requests.get('http://foo.bar/')
/usr/local/lib/python2.7/site-packages/requests-0.14.1-py2.7.egg/requests/api.pyc in get(url, **kwargs)
63
64 kwargs.setdefault('allow_redirects', True)
---> 65 return request('get', url, **kwargs)
66
67
/usr/local/lib/python2.7/site-packages/requests-0.14.1-py2.7.egg/requests/safe_mode.pyc in wrapped(method, url, **kwargs)
37 r.status_code = 0 # with this status_code, content returns None
38 return r
---> 39 return function(method, url, **kwargs)
40 return wrapped
/usr/local/lib/python2.7/site-packages/requests-0.14.1-py2.7.egg/requests/api.pyc in request(method, url, **kwargs)
49
50 try:
---> 51 return session.request(method=method, url=url, **kwargs)
52 finally:
53 if adhoc_session:
/usr/local/lib/python2.7/site-packages/requests-0.14.1-py2.7.egg/requests/sessions.pyc in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, return_response, config, prefetch, verify, cert)
239
240 # Send the HTTP Request.
--> 241 r.send(prefetch=prefetch)
242
243 # Return the response.
/usr/local/lib/python2.7/site-packages/requests-0.14.1-py2.7.egg/requests/models.pyc in send(self, anyway, prefetch)
629
630 except socket.error as sockerr:
--> 631 raise ConnectionError(sockerr)
632
633 except MaxRetryError as e:
ConnectionError: [Errno 8] hostname nor servname provided, or not known
但是ConnectionError异常提供的信息告诉你发生了什么;
In [8]: try:
foobar = requests.get('http://foo.bar/')
except requests.ConnectionError as oops:
print oops.message
...:
[Errno 8] hostname nor servname provided, or not known