首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复这个IOError:[Errno错误] [Errno 11004]?

如何修复这个IOError:[Errno错误] [Errno 11004]?
EN

Stack Overflow用户
提问于 2012-07-17 21:40:34
回答 1查看 8.6K关注 0票数 0

这个简单的Python3脚本:

代码语言:javascript
复制
import urllib.request

host = "scholar.google.com"
link = "/scholar.bib?q=info:K7uZdMSvdQ0J:scholar.google.com/&output=citation&hl=en&as_sdt=1,14&ct=citation&cd=0"
url = "http://" + host + link
filename = "cite0.bib"
print(url)
urllib.request.urlretrieve("http://scholar.google.com" + url, filename)

引发此例外情况:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:/Users/ricardo/Desktop/Google-Scholar/BibTex/test2.py", line 8, in <module>
    urllib.request.urlretrieve("http://scholar.google.com" + url, filename)
  File "C:\Python32\lib\urllib\request.py", line 150, in urlretrieve
    return _urlopener.retrieve(url, filename, reporthook, data)
  File "C:\Python32\lib\urllib\request.py", line 1569, in retrieve
    fp = self.open(url, data)
  File "C:\Python32\lib\urllib\request.py", line 1541, in open
    raise IOError('socket error', msg).with_traceback(sys.exc_info()[2])
  File "C:\Python32\lib\urllib\request.py", line 1537, in open
    return getattr(self, name)(url)
  File "C:\Python32\lib\urllib\request.py", line 1715, in open_http
    return self._open_generic_http(http.client.HTTPConnection, url, data)
  File "C:\Python32\lib\urllib\request.py", line 1695, in _open_generic_http
    http_conn.request("GET", selector, headers=headers)
  File "C:\Python32\lib\http\client.py", line 967, in request
    self._send_request(method, url, body, headers)
  File "C:\Python32\lib\http\client.py", line 1005, in _send_request
    self.endheaders(body)
  File "C:\Python32\lib\http\client.py", line 963, in endheaders
    self._send_output(message_body)
  File "C:\Python32\lib\http\client.py", line 808, in _send_output
    self.send(msg)
  File "C:\Python32\lib\http\client.py", line 746, in send
    self.connect()
  File "C:\Python32\lib\http\client.py", line 724, in connect
    self.timeout, self.source_address)
  File "C:\Python32\lib\socket.py", line 386, in create_connection
    for res in getaddrinfo(host, port, 0, SOCK_STREAM):
IOError: [Errno socket error] [Errno 11004] getaddrinfo failed

我可以打开来自print语句的url,非常好:

sdt=1,14&ct=citation&cd=0

是什么引起的?我尝试将http://更改为http:/// (三个斜杠),但引发了相同的异常。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-17 22:03:20

你的问题是:

代码语言:javascript
复制
urllib.request.urlretrieve("http://scholar.google.com" + url, filename)

您要两次添加http://scholar.google.com部件(url已经启动http://scholar.google.com)。因此,urillib认为您在scholar.google.comhttp上请求一个页面--不用说,这个域不存在。你的错误就是这么说的。

显然,只需请求url即可。

今后要更快地找到这类东西的方便提示:当添加用于调试的print语句时,请确保打印正在调试的命令中使用的实际值。如果您的print语句也连接了基本URL,您将在大约两秒钟内找到这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11531275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档