zoukankan      html  css  js  c++  java
  • python结合fiddler批量爬取抖音APP里面的视频

    一、Fiddler的安装与设置

    Fiddler官网:https://www.telerik.com/download/fiddler

    电子邮件随便填一下就可以了,按照安装提示一直点确定即可安装。

    打开Fiddler,在Tools---Options处进行设置,如图:

    ps:这里的端口8888,是待会与手机/模拟器进行连接要使用到的(手机也可以,这里用模拟器示范)

    在电脑下载一个手机模拟器,这里我用的是夜神模拟器

    下载地址:https://www.yeshen.com/,下载后安装即可

    打开模拟器,进入设置-----WLAN,会发现已经连上了一个网络,鼠标长按,选择修改网络

    选择高级选项,代理改为手动,然后输入你电脑的ip和8888端口号保存即可

    在模拟器中打开浏览器,输入:http://你的电脑ip地址:8888,如图所示,下载证书并打开安装

    证书名随便取一个名字就好了,若没有安装证书,将无法抓取HTPPS请求

    二、抓取抖音数据包

    打开Fiddler软件,Rules------Customize Rules进入Fiddler ScriptEditor页面

    定位到OnBeforeResponse函数下面,编写抓取数据的规则

    1处是Fiddler中捕捉到的抖音数据包的路径,抖音官方可能时不时会更改路径,具体以实际分析为准

    2处是保存地址,更改为你们自己的保存地址。代码放在下面,方便复制。

    if (oSession.uriContains("https://api3-core-c-hl.amemv.com/aweme/v1/aweme/post/")){
                var strBody=oSession.GetResponseBodyAsString();
                var sps = oSession.PathAndQuery.slice(-58,);
                //FiddlerObject.alert(sps)
                var filename = "H:/software/fid" + "/" + 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(); 
                }

    打开模拟器中的抖音,搜索刀某刀进入个人页面,滑动抖音,使屏幕整个浏览完全部作品

    这个时候Fiddler加载出了js对象,被我们前面编写的抓取规则捕捉到,保存在本地

    分析得到的json文件,找出视频url的位置,接下来用python代码下载视频就轻松多了

    下载成功结果如图,刀某刀的个人主页视频就保存下来了,而且还是无水印视频

    下面附上python代码,保存路径记得改为自己电脑的

    import os,json,requests
    # 请求头
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'}
    
    videos_list = os.listdir('H:/software/fid/')  #获取文件夹内所有json包名
    
    count = 1  #计数,用来作为视频名字
    
    for videos in videos_list:  #循环json列表,对每个json包进行操作
        a = open('H:/software/fid/{}'.format(videos),encoding='utf-8')  #打开json包
        content = json.load(a)['aweme_list'] #取出json包中所有视频
    
        for video in content:  #循环视频列表,选取每个视频
            video_url = video['video']['play_addr']['url_list'][1] #获取视频url,每个视频有4个url,我选的第2个
            videoMp4 =  requests.get(video_url,headers=headers).content #获取视频二进制代码
            with open('H:/software/video/{}.mp4'.format(count),'wb') as f: #以二进制方式写入路径,记住要先创建路径
                f.write(videoMp4)  #写入
                print('视频{}下载完成'.format(count)) #下载提示
            count += 1 #计数+1

    至此,Python结合Fiddler爬取抖音视频就完成了

    如有疑问,欢迎在下面评论,或者私信我

  • 相关阅读:
    更改文件、图片名称思路,我们的名字在以后添加_2等待
    UIStepper使用的具体解释的控制
    ArcSDE10.1配置Oracle 监听器来使用SQL操作ST_Geometry(个人改动版)
    SDE ST_Geometry SQL st_intersects查询很慢的解决方法
    通过SQL直接插入、修改ArcGIS SDE空间表中的数据
    使用POI读写word docx文件
    Weblogic读不到Word文件
    POI写Word换行
    使用POI转换word doc文件
    POI生成Web版Word文件
  • 原文地址:https://www.cnblogs.com/weikud/p/12953376.html
Copyright © 2011-2022 走看看