1. 分析需求
打开某音热搜,选择需要获取的热榜如图
查找包含热搜内容的接口返回如图
将url地址保存
2. 开发
定义请求头
headers = {'Cookie': '自己的cookie','Accept': 'application/json, text/plain, */*','Accept-Encoding': 'gzip, deflate','Host': 'www.douyin.com','User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15','Accept-Language': 'zh-CN,zh-Hans;q=0.9','Referer': 'https://www.douyin.com/hot','Connection': 'keep-alive'
}
配置上面获取到的url
定义抓取元素数组
position_list = [] # 热搜排名title_list = [] # 热搜标题time_list = [] # 热搜时间hot_value_list = [] # 热度值hot_url = [] # 热搜链接
开始请求
r = requests.get(url, headers=headers)# 用json接收请求数据json_data = r.json()
解析响应
data_list = json_data['data']['word_list']
循环赋值
for data in data_list:title = data.get('word', '') # 热搜标题title_list.append(title)position = data.get('position', 0) # 热搜排名position_list.append(position)hot_value = data.get('hot_value', '') # 热搜值hot_value_list.append(hot_value)event_time = data.get('event_time', '') # 热搜时间戳if event_time:timestamp = float(event_time)# 时间戳转时间dt_object = datetime.datetime.fromtimestamp(timestamp)formatted_date = dt_object.strftime("%Y-%m-%d %H:%M:%S")time_list.append(formatted_date)else:time_list.append('')hot_url.append('https://www.douyin.com/hot/' + data.get('sentence_id', '')) # 热榜链接
写入csv
df = pd.DataFrame({'热搜排名': position_list,'热搜标题': title_list,'热搜时间': time_list,'热度值': hot_value_list,'热搜链接': hot_url,})# 保存结果到csv文件df.to_csv('抖音热搜.csv', index=False, encoding='utf_8_sig')