(编辑:jimmy 日期: 2024/12/27 浏览:2)
由于之前和朋友聊到抖音评论的爬虫,demo做出来之后一直没整理,最近时间充裕后,在这里做个笔记。
提示:大体思路 通过fiddle + app模拟器进行抖音抓包,使用python进行数据整理
python3 下载
fiddle 安装及配置
手机模拟器下载
模拟器下载好之后, 打开模拟器
在应用市场下载抖音
对抖音进行fiddle配置,配置成功后就可以当手机一样使用了
我们随便打开一个视频之后,fiddle就会刷新新的数据包
在json中找到视频地址:
在fiddler中添加下载视频代码:注意两点:
(1)get后面的路径要随时看进行更换
(2)下载的路径要在fiddler下面自己新建
if (m_Hide304s && oSession.responseCode == 304) { oSession["ui-hide"] = "true"; } if (oSession.uriContains("https://aweme.snssdk.com/aweme/v1/general/search/single/")){ var strBody=oSession.GetResponseBodyAsString(); var sps = oSession.PathAndQuery.slice(-58,); //FiddlerObject.alert(sps) var timestamp=new Date().getTime(); var filename = "D:\抖音评论资料" + "/" + sps + timestamp + ".json"; var curDate = new Date(); var sw : System.IO.StreamWriter; if (System.IO.File.Exists(filename)){ sw = System.IO.File.AppendText(filename); sw.Write(strBody); } else{ sw = System.IO.File.CreateText(filename); sw.Write(strBody); } sw.Close(); sw.Dispose();
此段代码放到fiddler中的script的response中,如下图:添加好之后别忘记保存!!
程序执行代码:
import os import json import time import requests import re import csv class Douyin(object): def __init__(self): pass self.url1 = 'https://aweme.snssdk.com/aweme/v2/comment/list/"%Y--%m--%d %H:%M:%S", timeArray) meta['digg_count'] = con['aweme_info']['statistics']['digg_count'] meta['comment_count'] = con['aweme_info']['statistics']['comment_count'] meta['share_count'] = con['aweme_info']['statistics']['share_count'] meta['share_url'] = con['aweme_info']['share_url'] except: meta['title'] = '' meta['author_name'] = '' meta['u_name'] = '' meta['create_time'] = '' meta['digg_count'] = '' meta['comment_count'] = '' meta['share_count'] = '' meta['share_url'] = '' if meta['u_name'] == '': try: meta['u_name'] = con['aweme_info']['music']['owner_handle'] except: meta['u_name'] = '' if meta['title'] == '': pass else: lists.append(meta) # print(meta) return lists def save_data(self, meta): header = ['share_url', 'title', 'author_name', 'u_name', 'create_time', 'digg_count', 'comment_count', 'share_count'] print(meta) with open('test.csv', 'a', newline='', encoding='utf-8-sig') as f: writer = csv.DictWriter(f, fieldnames=header) writer.writeheader() # 写入列名 writer.writerows(meta) def run(self): meta = self.parse() self.save_data(meta) if __name__ == '__main__': douyin = Douyin() douyin.run()
运行代码后在代码执行目录下会生成一个excel
ps:抖音不会一次性返回整个评论数据包,每次往下滑动评论区会多出26条评论数据,我们就可以利用模拟器进行滑动操作。
点击 更多>鼠标宏
点击录屏之后,用鼠标往下滑动一次页面
点击停止,就会将你刚才的操作保存下来
点击设置 可以对刚才的操作进行循环播放,从而达到自动刷新评论区。