Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Python请求不能解析TiktokAPI数据?_Python_Json_Http_Python Requests - Fatal编程技术网

为什么Python请求不能解析TiktokAPI数据?

为什么Python请求不能解析TiktokAPI数据?,python,json,http,python-requests,Python,Json,Http,Python Requests,我正在使用请求库向TikTok发出Python请求。我设法找到了他们的用户详细信息的URL,我不知道这是否合法。如果不是,请告诉我。当我试图将其解析为json时,它会引发一个异常。有人能帮我分析/解决这个问题吗?代码如下: Python代码: r1 = requests.get("https://www.tiktok.com/node/share/user/@nike?isUniqueId=true&verifyFp=verify_kb51zknj_GH98fcme_eDuR_4XzM_

我正在使用请求库向TikTok发出Python请求。我设法找到了他们的用户详细信息的URL,我不知道这是否合法。如果不是,请告诉我。当我试图将其解析为json时,它会引发一个异常。有人能帮我分析/解决这个问题吗?代码如下: Python代码:

r1 = requests.get("https://www.tiktok.com/node/share/user/@nike?isUniqueId=true&verifyFp=verify_kb51zknj_GH98fcme_eDuR_4XzM_ATwp_s8TRdCzr8fwi&_signature=KBbp4AAgEBCtR.e4r-y0ZSgWqPAAHbR").json()
print(r1)
输出:

File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/requests/models.py", line 897, in json
    return complexjson.loads(self.text, **kwargs)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/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)

谢谢

您必须提供用户代理标题,即

headers = {
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
}

r1 = requests.get("https://www.tiktok.com/node/share/user/@nike?isUniqueId=true&verifyFp=verify_kb51zknj_GH98fcme_eDuR_4XzM_ATwp_s8TRdCzr8fwi&_signature=KBbp4AAgEBCtR.e4r-y0ZSgWqPAAHbR", headers=headers).json()
print(r1)

抱歉,我试图将其作为注释发布,但未能格式化代码xD

您必须提供用户代理标题,即

headers = {
    'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
}

r1 = requests.get("https://www.tiktok.com/node/share/user/@nike?isUniqueId=true&verifyFp=verify_kb51zknj_GH98fcme_eDuR_4XzM_ATwp_s8TRdCzr8fwi&_signature=KBbp4AAgEBCtR.e4r-y0ZSgWqPAAHbR", headers=headers).json()
print(r1)

抱歉,我试图将其作为评论发布,但未能格式化代码xD,我用Python编写了一个包装器,允许您获取用户、视频、哈希标签、音乐视频等。 该项目可在此处找到-

对于获取用户的问题-

安装

pip install PyTikTokAPI
获取用户

from TikTokAPI import TikTokAPI
api = TikTokAPI()
user_obj = api.getUserByName("fcbarcelona")

我用Python编写了一个包装器,允许您获取用户、视频、hashtag、音乐视频等。 该项目可在此处找到-

对于获取用户的问题-

安装

pip install PyTikTokAPI
获取用户

from TikTokAPI import TikTokAPI
api = TikTokAPI()
user_obj = api.getUserByName("fcbarcelona")


在使用JSON解码器之前,您是否尝试打印响应正文?也许不是JSON,而是某种其他编码。此外,您还应该检查响应标题。要处理这个问题,我建议使用Postman之类的GUI工具。@Pac0在解码之前打印结果是什么意思?类似于:r=requests.geturl,然后打印r.text。还有r.headers,首先是r.status\u代码,用于检查是否存在错误。请参阅。@Pac0它打印出一个空行。我检查了响应标题,它显示内容编码为br/Brotli。这可能与问题有关吗?@Pac0状态代码为200,但在打印标题时,显示内容长度为0。在使用JSON解码器之前,您是否尝试打印响应正文?也许不是JSON,而是某种其他编码。此外,您还应该检查响应标题。要处理这个问题,我建议使用Postman之类的GUI工具。@Pac0在解码之前打印结果是什么意思?类似于:r=requests.geturl,然后打印r.text。还有r.headers,首先是r.status\u代码,用于检查是否存在错误。请参阅。@Pac0它打印出一个空行。我检查了响应标题,它显示内容编码为br/Brotli。这可能与问题有关吗?@Pac0状态代码为200,但打印标题时,它表示内容长度为0Thanks!你能解释一下什么是用户代理以及我什么时候需要使用它吗?很好@Serket:用户代理只是一个标题文本,用于宣布哪个浏览器==代理正在执行请求。它很容易伪造,所以你可以发送Request,就好像它是从Firefox或Safari等发送的一样。@Pac0那么为什么我在Instagram等的其他链接上执行此操作时不需要添加用户代理呢?出于某种原因,tiktok API会对此标题执行一些过滤。我不知道为什么,因为你可以很容易地伪造它。用户代理通常是在浏览器执行请求时使用的,如果你使用预期以编程方式使用的API,那么通常不需要该头。也许tiktok除了你发布的api之外还有其他api?谢谢!你能解释一下什么是用户代理以及我什么时候需要使用它吗?很好@Serket:用户代理只是一个标题文本,用于宣布哪个浏览器==代理正在执行请求。它很容易伪造,所以你可以发送Request,就好像它是从Firefox或Safari等发送的一样。@Pac0那么为什么我在Instagram等的其他链接上执行此操作时不需要添加用户代理呢?出于某种原因,tiktok API会对此标题执行一些过滤。我不知道为什么,因为你可以很容易地伪造它。用户代理通常是在浏览器执行请求时使用的,如果你使用预期以编程方式使用的API,那么通常不需要该头。也许tiktok除了你发布的api之外还有其他api?你能用它获取用户信息吗?比如他有多少追随者?你能用它获取用户信息吗?比如他有多少追随者?