+18888889999
诚信为本:市场永远在变,诚信永远不变。

最新Python爬虫抖音视频详细教程

你的位置: 首页 > 门徒平台资讯

最新Python爬虫抖音视频详细教程

2024-04-22 14:16:03

大家好!今天给大家带来一个用Python爬取抖音视频的文章,这个文章可能会很枯燥无味。所以先看效果,帅的人现在已经点赞收藏了。

爬取抖音小姐姐的主页所有视频 实现无水印下载

所需工具:1.Pycharm 2.mitmdump 3.fillder 4.夜神模拟器

(1)夜神模拟器配置

官网下载即可,完成之后打开夜神多开器,创建一个安卓5的模拟器

进入模拟器(开启ROOT后)下载Xposed框架

安装模块JustTrustMe

下载抖音,下载抖音版本号:14.8.0(我试过不知道什么原因别的版本抖音不能用)这些东西我都会放在公众号里,回复“抖音视频”即可获得。

(2)fiddler

官网下载即可,打开Fiddler会提示注册账号注册就行了,打开Fiddler配置 圈圈的都点一下,端口号可根据自己来 不冲突就行,最后要记得保存

配置手机模拟器中的网络端口号

打开设置——WIFI——长按——修改网络——高级选项——写入自己IP地址和端口号

端口号一定要和fiddler配置的一样!

开启fiddler,安装证书——打开模拟器浏览器 输入IP地址:端口号 如:192.168.1.9:8889,选择第二个蓝颜色的来连接点击

下载完,安装重命名即可

测试一下,在上面步骤全部完成的情况下,打开浏览器数据百度网址,看看fiddler是否抓到包如果是下图这样的就可以了

(3)mitmdumpy下载

直接命令行pip即可,这个简单如果出现问题百度一下,对了还有CA证书也需要安装

目的:获取视频下载的真实接口

打开fiddler 手机模拟器手机抓包——进入一个小姐姐的主页,进入之后就可以停止flddler的抓包了

大家可以看到我们的fiddler为我们抓包到了很多的数据包啊,最笨的办法一条一条的点开的看,最简单的办法通过筛选找到这个小姐姐主页的数据,那怎么筛选呢? 点击fiddler中URL列旁边的三个点,输入aweme.snssdk.com/aweme/v1/aweme/post/?,点击fiddler即可,那输入的是什么呢?我可告诉大家 那是我一条一条找之后发现的主页数据URL的特征,通过他就能筛选出主页数据包

我们筛选一下,可以看到啊只有一条数据包,我们点击右下角的Body-JSON看一下,可以看到啊,这正是我们想要的主页数据包

我们把他的text右键全选复制一下,进入json网站转换一下

对其折叠后得到的就是这样的数据,大家看一下啊 他是有规律的,研究一下,我就直接告诉你了,他的aweme_list中有N个object,每个object就是每个视频对应的数据

我们点开其中一个object找一下视频的连接,我就直接告诉你了,这没什么技术含量,他是视频链接 按说得和video沾边吧,事实就是如此,object下的video中的第一个playaddr中urllist里的链接就是视频下载链接,有四个都一样

到底是不是呢,我们点开一下看看,点开之后发现他是一个下载链接,而下载的是一个html文件,

先别急 我们把它下载下来,再把他的文件后缀名 改成MP4(直接开 没有技术含量),你在看他这个文件点开他 你会看到特就是主页中的视频 而且无水印

那好,到这里 fiddler的作用已经结束了,我们获得了什么呢,我们知道了通过aweme.snssdk.com/aweme/v1/aweme/post/?可以找到主页视频数据,发现了视频下载的url就在awemelist-video-playaddr-urllist中。

目的:获得视频下载链接并保存

在执行mitmdump抓包之前呢,我们需要写一个python文件了,这个脚本的作用就是将视频的下载链接解析处理并保存。那如何调用这个脚本呢,就是得通过mitmdump调用,mitmdump和fiddler的不同之处就在于mitmdump可以调用python文件

那如何来写呢,思路很简单 我们已经知道了主页数据的url特征,我们可以用类似于fiddler筛选的方式利用mitmdump筛选出主页数据,通过主页数据就可以解析除视频真实下载链接,代码如下,需要注意的是response(flow)这个函数必须这样命名这样写,这个函数是用于和mitmdump交互的

def parser_home(parser_home):
    data=[]
    home_data=json.loads(parser_home)
    for item in home_data["aweme_list"]:
        dic = {}
        dic["video_url"]=item["video"]["play_addr"]["url_list"][3] #视频下载链接
        data.append(dic)
    return data
def save_data(data,path):
    header = list(data[0].keys())  # 数据列名
    with open(path, 'a', newline='',encoding="utf-8") as f:
        writer = csv.DictWriter(f,fieldnames=header)
        writer.writerows(data)
def response(flow):
    try:
        if "aweme.snssdk.com/aweme/v1/aweme/post/?" in flow.request.url:
            data=parser_home(flow.response.text)
            save_data(data,"home.csv")
    except:
        print("---"*100,"错误","--"*100)
        pass

写好文件之后就该调用了,首先命令行进入写好的py的目录下 通过 mitmdump -s test.py -p 8889 调用 -s后是py文件名 -p后是端口号 必须跟手机上的一模一样 和fiddler设置一样。看到下面的就对了

我们用手机打开抖音搜索一个小姐姐,打开主页,如果你写的py跟我的一样那么在你指定就生成了一个csv文件 是下面的样子

从mitmdump开始我是发布了一个视频的可以去我主页看这个视频,很这个情况啊 基本上是差不多的,流程是没毛病的

我们已经拿到了视频的下载地址那么现在通过Python下载我想应该不是难事吧 直接上代码了

def Download_video(url):
    video = requests.get(url).content
    path_vi = (r"D:/Desktop/视频/%s.mp4"%(random.randint(0,100000)))
    with open(path_vi, "wb") as code:
        code.write(video)

if __name__ == "__main__":
    if not os.path.exists(r"D:/Desktop/视频"):
        os.mkdir(r"D:/Desktop/视频")
    df = pd.read_csv("home.csv", names=["url"])
    pool=Pool(5)
    pool.map(Download_video,df.url.tolist())

然后就有了开头的视频了。我之前录了一个视频也是抓包下载视频的 在我发布的视频,流程跟这个是差不多的要是觉得文字有些难理解可以去看看视频。都看到这了,还不点个赞收个藏想啥呢

地址:海南省海口市玉沙路58号  电话:0898-66889888  手机:18888889999
Copyright © 2012-2018 门徒-门徒娱乐-注册登录站 版权所有 ICP备案编:琼ICP备88889999号 

平台注册入口