获取python的freebase API时遇到问题

2024-06-28 15:07:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试让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创建一个请求对象并更改我的用户代理头,还尝试过使用request模块而不是urllib,但这两种方法都不起作用。我知道这不是我的API键的问题,或者freebase API现在完全关闭了,因为代码(使用我的API键)在朋友的python设置中运行得很好。有人对此有什么想法吗?你知道吗

我目前使用的是python2.7.10、anaconda2.3.0(64位),我一直在使用pycharm。你知道吗


Tags: 代码inpyselfsendapiurlssl