And*_*ach 8 python json python-requests
我有这个代码:
import requests
r = requests.get('https://www.instagram.com/p/CJDxE7Yp5Oj/?__a=1')
data = r.json()['graphql']['shortcode_media']
Run Code Online (Sandbox Code Playgroud)
为什么我会收到这样的错误?
C:\ProgramData\Anaconda3\envs\test\python.exe C:/Users/Solba/PycharmProjects/test/main.py
Traceback (most recent call last):
File "C:/Users/Solba/PycharmProjects/test/main.py", line 4, in <module>
data = r.json()
File "C:\ProgramData\Anaconda3\envs\test\lib\site-packages\requests\models.py", line 900, in json
return complexjson.loads(self.text, **kwargs)
File "C:\ProgramData\Anaconda3\envs\test\lib\json\__init__.py", line 357, in loads
return _default_decoder.decode(s)
File "C:\ProgramData\Anaconda3\envs\test\lib\json\decoder.py", line 337, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "C:\ProgramData\Anaconda3\envs\test\lib\json\decoder.py", line 355, in raw_decode
raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)
r.json()期望 API 返回 JSON 字符串。API 应明确表示它正在通过响应标头使用 JSON 进行响应。
在这种情况下,您请求的 URL 要么未使用正确的 JSON 进行响应,要么未明确说明它正在使用 JSON 进行响应。
您可以首先通过以下方式检查 URL 发送的响应:
data = r.text
print(data)
Run Code Online (Sandbox Code Playgroud)
如果响应可以被视为 JSON 字符串,那么您可以使用以下方式处理它:
import json
data = json.loads(r.text)
Run Code Online (Sandbox Code Playgroud)
注意:您还可以检查content-type和Accept标头以确保请求和响应采用所需的数据类型
| 归档时间: |
|
| 查看次数: |
51942 次 |
| 最近记录: |