咱们筹备实现的是抖音的热搜榜和话题的相干数据抓取。
抓包工具: charles
模拟器: 木木模拟器


抖音的热搜榜

一:能够间接通过抓包工具获取接口

将获取到的接口地址复制进去(简化后):
https://aweme-hl.snssdk.com/aweme/v1/hot/search/list/
接着就能够间接申请,来获取热搜数据了。


二:通过热搜的分享页面获取接口
点击右上角的分享选项,复制链接后,用浏览器关上。

在浏览器中关上后 https://www.iesdouyin.com/share/billboard/


同样也能够获取到接口地址。可间接进行get申请
https://www.iesdouyin.com/web/api/v2/hotsearch/billboard/word/

热搜下对应的话题数据

咱们点击一个话题,来找一下热搜下对应的话题数据:
右上角的播放量数据在
https://aweme-hl.snssdk.com/aweme/v1/hot/search/list/?&source=3&os_api=23&version_code=860

咱们通过寻找其余数据的接口,将链接复制下来(简化后):
https://aweme-hl.snssdk.com/aweme/v1/hot/search/video/list/?hotword=吴亦凡 脖子
想要的数据就有了,比方以后话题总参加人数,能够间接GET申请接口来解析数据。


热搜的数据很简略就能够获取到,
然而目前针对于指定话题,一些加密的参数还没有钻研明确。欢送大家留言交换

然而为了实现话题数据的抓取,不得不另寻他路,没想到还真找到了其余的接口。

指定话题的数据获取办法

以一个话题示例:

咱们须要的是该话题对应的播放量和视频数量。
通过抓包,找到了如下接口:
https://aweme-hl.snssdk.com/aweme/v1/challenge/detail/?query_type=0&ch_id=1635753360881672

这里须要 ch_id 能力获取到咱们须要的数据。
如何能力简略快捷的获取到这个ch_id呢,通过一段时间的剖析。
我发现: 该话题《从地球登程》的ch_id:1635753360881672,
能够在该相干用户的详情中找到。

那么还是老办法,获取分享页面的链接,从浏览器关上


查看分享页面中的接口数据。

果不其然,找到了咱们须要的id。


话题下的视频详情:
那么如何获取话题下的视频详情呢,回到模拟器,又发现了右上方的分享选项


将链接复制下来之后,应用浏览器关上,在接口中能够找到咱们所须要的数据
https://www.iesdouyin.com/share/challenge/1635753360881672

察看一下这个接口的参数

ch_id 曾经晓得了,
_signature 签名,在之前的文章中有解说过。这里就不再反复了。


代码局部

案例代码,绝对比拟简介,须要大家自行欠缺。
热搜榜数据:

import requestsimport pprint# 抖音热搜榜hot_search = 'https://aweme-hl.snssdk.com/aweme/v1/hot/search/list/?detail_list=1'headers = {"User-Agent":"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Mobile Safari/537.36"}hot_json = requests.get(hot_search,headers=headers).json()hot_list = []for data in hot_json['data']['word_list']:    item = {}    keyword = data['word']    hot_value = data['hot_value']    item[keyword] = hot_value    hot_list.append(item)pprint.pprint(hot_list)


热搜词对应的浏览人数
这里取其中一个热搜词。

import requestsheaders = {"User-Agent":"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Mobile Safari/537.36"}hot_word = '鹿晗吃播'hot_reading = 'https://aweme-hl.snssdk.com/aweme/v1/hot/search/video/list/?hotword={}'.format(hot_word)hot_json = requests.get(hot_reading,headers=headers).json()print("持续时间:",hot_json['aweme_list'][2]['duration'])print("热度值:",hot_json['aweme_list'][2]['hot_info']['value'])print("以后排名:",hot_json['aweme_list'][2]['hot_info']['rank'])


单个话题浏览量

import requestsdy_topic = 'https://aweme-hl.snssdk.com/aweme/v1/challenge/detail/?query_type=0&ch_id=1635753360881672'headers = {"User-Agent":"Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Mobile Safari/537.36"}topic_json = requests.get(dy_topic,headers=headers).json()view_count = topic_json['ch_info']['view_count'] # 浏览量print(view_count)

如果对大家有帮忙或者有疑难,欢送点赞????留言!


更新

发现 分享页面中话题的 sign 和 个人主页的生成办法一样的。
并且话题视频的get申请中,不须要dytk,带上 ch_id 和 _sign即可。






——————————————————————————————————————————

TiToData:业余的短视频、直播数据接口服务平台。

更多信息请分割: TiToData

笼罩支流平台:抖音,快手,小红书,TikTok,YouTube