我正在尝试让freebase搜索API在python中运行,我运行的代码与freebase api网站here完全一样,后者使用urllib.urlopen(url)。但是我一直收到以下错误:
追踪(最近一次呼叫最后一次):
File ".../FreebaseExtractor.py", line 63, in <module>
response = json.loads(urllib.urlopen(url).read())
File "...\Anaconda\lib\urllib.py", line 87, in urlopen
return opener.open(url)
File "...\Anaconda\lib\urllib.py", line 213, in open
return getattr(self, name)(url)
File "...\Anaconda\lib\urllib.py", line 443, in open_https
h.endheaders(data)
File "...\Anaconda\lib\httplib.py", line 1049, in endheaders
self._send_output(message_body)
File "...\Anaconda\lib\httplib.py", line 893, in _send_output
self.send(msg)
File "...\Anaconda\lib\httplib.py", line 855, in send
self.connect()
File "...\Anaconda\lib\httplib.py", line 1274, in connect
server_hostname=server_hostname)
File "...\Anaconda\lib\ssl.py", line 352, in wrap_socket
_context=self)
File "...\Anaconda\lib\ssl.py", line 579, in __init__
self.do_handshake()
File "...\Anaconda\lib\ssl.py", line 808, in do_handshake
self._sslobj.do_handshake()
IOError: [Errno socket error] EOF occurred in violation of protocol (_ssl.c:590)
我尝试使用urllib2创建请求对象并更改我的User-Agent标头,以及使用请求模块而不是urllib,但这些都不起作用。我知道这不是我的API密钥问题,或者freebase API现在完全关闭,因为代码(使用我的API密钥)在朋友的python设置上运行得很好。有人对此有什么想法吗?
我目前使用python 2.7.10,Anaconda 2.3.0(64位),我一直在使用pycharm。