共计 2832 个字符,预计需要花费 8 分钟才能阅读完成。
咱们筹备实现的是抖音的热搜榜和话题的相干数据抓取。
抓包工具: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 requests
import 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 requests
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_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 requests
dy_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