咱们筹备实现的是抖音的热搜榜和话题的相干数据抓取。
抓包工具: 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