我正在尝试使用从USGS Earthquake API中提取的JSON数据。如果您点击这个链接,就可以看到原始的JSON数据。
JSON看起来很棒;但是,返回的请求被包装在一个eqfeed_callback();
中,这破坏了Python中的JSON反序列化。
快速浏览一下我到目前为止的代码:
import requests
import json
from pprint import pprint
URL = "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojsonp"
response = requests.get(URL)
raw_json = str(response.content)
json = json.loads(raw_json)
print(json)
我得到了错误:
Traceback (most recent call last):
File "run.py", line 11, in <module>
json = json.loads(raw_json)
File "C:\Program Files\Anaconda3\lib\json\__init__.py", line 354, in loads
return _default_decoder.decode(s)
File "C:\Program Files\Anaconda3\lib\json\decoder.py", line 339, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\Program Files\Anaconda3\lib\json\decoder.py", line 357, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
虽然我很肯定,但问题是它被包装在该函数中,而JSON解码器不喜欢它。那么,我该如何删除函数包装器才能留下干净的JSON呢?
发布于 2019-12-11 13:06:09
您使用了错误的URL。
封装在函数调用中的JSON是JSONP,当从web浏览器调用API时,需要它来绕过CORS。
获取普通JSON的URL为
URL = "http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.geojson"
https://stackoverflow.com/questions/59279005
复制相似问题