我应该如何使用 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 响应?

如何从 xml 解析器中读取数据

Python 3 获取和解析 JSON API

Python:如何从 gmail API 获取电子邮件的主题

如何使用Python中的BeautifulSoup从HTML链接解析嵌套表?