我应该如何使用 python 从 api 解析这个 JSON? Python 返回 json.decoder.JSONDecodeError: Expecting value: line 1 colu
Posted
技术标签:
【中文标题】我应该如何使用 python 从 api 解析这个 JSON? Python 返回 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)【英文标题】:How should I parse this JSON from the api using python? Python returns json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 【发布时间】:2022-01-21 14:41:13 【问题描述】:我正在尝试从此 apihttps://www.tiktok.com/api/user/detail/?aid=1988&app_name=tiktok_web&device_platform=web_pc&uniqueId=asdfasdfasdfasdfasdfds 解析 JSON,但是当我这样做时,它返回为 json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)。我的代码在这里
import json, requests
url = requests.get("https://www.tiktok.com/api/user/detail/?aid=1988&app_name=tiktok_web&device_platform=web_pc&uniqueId=asdfasdfasdfasdfasdfds")
text = url.text
data = json.loads(text)
print(data)
【问题讨论】:
响应好像是空的。试试print(text)
您是否尝试在json.loads
调用之前检查text
*before` 的值?你得到了什么价值?你知道它应该是什么样子吗?
【参考方案1】:
服务器通常禁止自动请求,最简单的检查是验证请求中传递的标头。默认情况下requests
库使用'User-Agent': 'python-requests/2.25.1'
,但如果你将其更改为类似浏览器的用户代理,你会得到预期的响应:
In [10]: requests.get("https://www.tiktok.com/api/user/detail/?aid=1988&app_name=tiktok_web&device_platform=web_pc&uniqueId=asdfasdfasdfasdfasdfds", headers='User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/96.0.4664.110 Safari/537.36').json()
...:
Out[10]:
'statusCode': 10202,
'userInfo': 'user': 'id': '',
'uniqueId': '',
'nickname': '',
'avatarThumb': '',
'avatarMedium': '',
'avatarLarger': '',
'signature': '',
'relation': 0,
'stats': 'followingCount': 0,
'followerCount': 0,
'heartCount': 0,
'videoCount': 0,
'diggCount': 0,
'heart': 0
请注意,您必须遵循 API 规则和建议,因此我建议您尝试查找官方指南如何正确使用他们的 API(要通过哪些标头,有哪些速率限制等)
【讨论】:
以上是关于我应该如何使用 python 从 api 解析这个 JSON? Python 返回 json.decoder.JSONDecodeError: Expecting value: line 1 colu的主要内容,如果未能解决你的问题,请参考以下文章
我应该如何使用 Alamofire 和 SwiftyJSON 解析来自 API 的 JSON 响应?
如何使用 python xml.etree.ElementTree 解析 eBay API 响应?