因此,我尝试从api获取简单响应,而当我尝试从api获取响应时,出现错误: JSONDecodeError:期望值:第1行第1列(字符0)
import requests
import json
current = "https://covidtracking.com/api/v1/states/current"
response = requests.get(current)
print(response.status_code)
gg = json.dumps(response.json(), indent = 4)
回溯如下:
---------------------------------------------------------------------------
JSONDecodeError Traceback (most recent call last)
<ipython-input-27-c5319b3765a1> in <module>
----> 1 gg = json.dumps(response.json(), indent = 4)
~\anaconda3\lib\site-packages\requests\models.py in json(self, **kwargs)
895 # used.
896 pass
--> 897 return complexjson.loads(self.text, **kwargs)
898
899 @property
~\anaconda3\lib\json\__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
346 parse_int is None and parse_float is None and
347 parse_constant is None and object_pairs_hook is None and not kw):
--> 348 return _default_decoder.decode(s)
349 if cls is None:
350 cls = JSONDecoder
~\anaconda3\lib\json\decoder.py in decode(self, s, _w)
335
336 """
--> 337 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
338 end = _w(s, end).end()
339 if end != len(s):
~\anaconda3\lib\json\decoder.py in raw_decode(self, s, idx)
353 obj, end = self.scan_once(s, idx)
354 except StopIteration as err:
--> 355 raise JSONDecodeError("Expecting value", s, err.value) from None
356 return obj, end
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
我到底在做什么错?我还希望获得有关使代码更好或更高效的提示,但我仍在学习如何编写python。
谢谢!
答案 0 :(得分:1)
您正在尝试使用API的HTML版本。而是将您的代码指向使用以下URL。
import requests
import json
current = "https://covidtracking.com/api/v1/states/current.json"
response = requests.get(current)
print(response.status_code)
#get the data from the API response as JSON
covid_data = response.json()
#Since we have the data by state, loop through each state
for data in covid_data:
#read the individual attributes from the data for each state and print / process as required.
print(f"{data['state']}-{data['positive']}")
请参考此URL,其中详细介绍了返回JSON的API和返回CSV的API。