本文仅供学习参考 切勿用于商业
本次爬取使用fiddler+模拟器(下载抖音APP)+pycharm
1. 下载最新版本的fiddler(自行百度下载),以及相关配置
1.1.依次点击,菜单栏-Tools-Options-HTTPS,如图1红框打钩,HTTPS旁边Connections配置,如图2红框打钩
1.2.再次点击HTTPS栏,点击Actions选择第二个…to Desktop这个选项,发送证书到桌面(方便找到,模拟器中需要安装)
2.下载安装模拟器,我用的是夜神模拟器
自行修改页面或内存等。。。。
2.1.回到电脑桌面, 找到刚才保存的证书,拖动到模拟器,看一下下图红框中的路径。
2.2. 返回模拟器桌面,打开设置,下拉找到进入-安全-选择从SD卡安装-如下图所示,找到证书进行安装,提示的随便输入。
2.3.返回到模拟器设置, 找到WiFi,进去,左键长按,修改网络,如图修改,本机ip查询,cmd输入ipconfig,IPv4后边的就是本机IP
3. 模拟器应用市场中下载抖音App,到此配置已完成,重启模拟器,之后测试fiddler是否能抓到请求包。
4.测试能抓到请求。然后分析请求。
5,本文爬取的是 '抖音昵称', '抖音ID', '个人简介' 因此查看到 抓包返回的是图2的数据
6.得到的数据不可能一个一个的复制保存到本地,因此可使用fiddler自行编写脚本保存数据, 走起,自己去添加一个,如图3,添加的脚本 自动保存相应数据到本地json文件
7.以下是fiddler脚本,根据需要自行修改
if (oSession.uriContains("https://aweme-eagle-hl.snssdk.com/aweme/v1/user/")){
//上边的网址是你需要保存数据的网址开头的部分,网站修改的话需要及时修改url var strBody=oSession.GetResponseBodyAsString(); var sps = oSession.PathAndQuery.slice(-64,-54); //FiddlerObject.alert(sps) var filename = "E:/此处是本地路径" + "/" + sps + ".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(); }
8.在模拟器抖音中, 不断的去往下翻,往右翻, 查看用户页,fiddler编写的脚本就自动保存了你需要的数据。如图
9. 那么问题来了 当想大量的爬取数据时, 不可能人工翻页,所以这时候用到了模拟器自带的操作助手功能。
9.1,自己动手录取一段,你想让模拟器不断循环的操作,设置循环次数,往下翻,记得保存。
9.2. 点击播放按钮,模拟器就会自动循环你录制的操作,一直往下翻页,fiddler,会不断有新的相应被抓到,本地的json数据越来越多。
=======================================================
基本操作搞完了,那么拿到的json文件如何解析呢,这时候敲代码去吧。
=======================================================
10。说一下思路,具体代码不做展示。
10.1,从本地去到json文件,放到一个列表中,循环列表中的json
10.2 json.load()读取json文件content
10.3 取json中你所需的资料。
10.4 存储,我存的excel文件,出现了一些问题,这里我说一下。
# 存储时特殊字符会报错,此处用codecs存储,存储的csv会出现编码乱的问题,解决办法,右键用记事本打开保存的csv文件,另存为一下,编码格式选utf-8. with codecs.open("./douyin/douyin.csv", "a+", encoding='utf-8') as f: writer = csv.writer(f, dialect="excel") writer.writerow(l)
10.5 爬到的数据,会有从重复的,去重很简单,这里就不说了。
展示一下我爬到的数据