因此,我的代码只有4行。我正在尝试连接到一个网站,但此后我想做的事无关紧要,因为没有其他代码就出现了错误。
import urllib.request from bs4 import BeautifulSoup html=urllib.request.urlopen('http://python-data.dr-chuck.net/known_by_Fikret.html').read() soup=BeautifulSoup(html,'html.parser')
和错误(简要总结一个):
for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno 11002] getaddrinfo failed During handling of the above exception, another exception occurred: urllib.error.URLError: <urlopen error [Errno 11002] getaddrinfo failed>
这是我尝试过的。
以及错误的较长和完整版本:
Traceback (most recent call last): File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 1240, in do_open h.request(req.get_method(), req.selector, req.data, headers) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\http\client.py", line 1083, in request self._send_request(method, url, body, headers) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\http\client.py", line 1128, in _send_request self.endheaders(body) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\http\client.py", line 1079, in endheaders self._send_output(message_body) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\http\client.py", line 911, in _send_output self.send(msg) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\http\client.py", line 854, in send self.connect() File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\http\client.py", line 826, in connect (self.host,self.port), self.timeout, self.source_address) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\socket.py", line 693, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\socket.py", line 732, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno 11002] getaddrinfo failed During handling of the above exception, another exception occurred: Traceback (most recent call last): File "D:/baiduyundownload/Tempo/Active/Python/Python Examples/Fileanalysis11111.py", line 4, in <module> html=urllib.request.urlopen('http://python-data.dr-chuck.net/known_by_Fikret.html').read() File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 162, in urlopen return opener.open(url, data, timeout) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 465, in open response = self._open(req, data) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 483, in _open '_open', req) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 443, in _call_chain result = func(*args) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 1268, in http_open return self.do_open(http.client.HTTPConnection, req) File "C:\Users\Administrator\AppData\Local\Programs\Python\Python35-32\lib\urllib\request.py", line 1242, in do_open raise URLError(err) urllib.error.URLError: <urlopen error [Errno 11002] getaddrinfo failed>
这意味着您的DNS系统无法正常工作,或者您必须在网络上使用代理并且未正确定义代理。
如果您需要使用代理,请将环境变量HTTP_PROXY(以及,可选HTTPS_PROXY)设置为网络的正确配置。格式为http://proxy.example.com:80; 如果您的代理服务器需要用户名和密码,则应将其传递,例如:http://username:password@proxy.example.com:80。
HTTP_PROXY
HTTPS_PROXY
http://proxy.example.com:80
http://username:password@proxy.example.com:80
对于DNS问题,请尝试从命令行查找域。打开命令提示符并键入,nslookup python-data.dr- chuck.net然后查看它是否返回给您IP地址。
nslookup python-data.dr- chuck.net