Python 从URLOpen获取JSON

Python 从URLOpen获取JSON,python,json,Python,Json,我无法始终从给定的url获取JSON。它只在大约60%的时间内有效 jsonurl = urlopen('http://www.reddit.com/r/funny/hot.json?limit=16') r_content = json.load(jsonurl)['data']['children'] 程序有时在第二行崩溃,因为url中的信息由于某种原因无法正确检索 通过一些调试,我发现我从第一行得到了以下错误: <addinfourl at 4321460952 whose fp

我无法始终从给定的url获取JSON。它只在大约60%的时间内有效

jsonurl = urlopen('http://www.reddit.com/r/funny/hot.json?limit=16')
r_content = json.load(jsonurl)['data']['children']
程序有时在第二行崩溃,因为url中的信息由于某种原因无法正确检索

通过一些调试,我发现我从第一行得到了以下错误:

<addinfourl at 4321460952 whose fp = <socket._fileobject object at 0x10185b050>>


此错误大约有40%的时间发生,其他60%的时间发生,代码工作正常。我做错了什么?如何使url打开更加一致?

客户端通常不存在问题。您的代码在行为上是一致的,但服务器响应可能会有所不同

我运行了几次您的代码,但确实出现了一些问题:

>>> jsonurl = urlopen('http://www.reddit.com/r/funny/hot.json?limit=16')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 406, in open
    response = meth(req, response)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 519, in http_response
    'http', request, response, code, msg, hdrs)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 444, in error
    return self._call_chain(*args)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/urllib2.py", line 527, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 429: Unknown
您必须查找以下内容::

>>> jsonurl.getcode()
200
>>> 
只有当它达到200时,您才应该处理从请求中获得的数据

>>> jsonurl.getcode()
200
>>>