写在前面
这是咸鱼的第十篇原创文章,谢谢大家一直以来的支持,虽然公众号的粉丝不多,但是为了能写出更好的原创文章,咸鱼这里建了一个群,你可以在群里提出对公众号的建议等。
前言
上周看到一个有趣的项目是使用Python+ADB做一个Python 抖音机器人 Douyin-Bot,自动翻页+颜值识别,自动点赞加关注,效果如下图,可以说是非常秀了。
源码地址:
https://github.com/wangshub/Douyin-Bot
而我们今天实现的就是批量下载抖音视频,结合上面的机器人可以说是机器人届的蒂花之秀。
今天我们实现的抖音爬虫主要有下面四点功能:
根据抖音号下载用户发布的全部视频
根据链接自动下载用户点赞的视频
根据链接自动下载某个主题下的全部视频
根据链接自动下载某个音乐下的全部视频
下面会先以第二个功能为例编写代码。
废话说多了,先上一波爬取的结果:
下载视频截图
输出日志截图
实战
引入类库
本次代码的主要功能模块如下:
这次的项目主要是根据用户分享的链接自动下载,首先我们通过分享得到下面的链接:
根据上面的链接我们可以得到以下代码,并且获得唯一的ID标识
我们通过浏览器打开上面的链接可以获得以下的Headers信息:
我们以第二个获取点赞视频为例,打开我们分享的链接,将开发者模式调整成手机版,点击「喜欢」可以看到请求的链接,如下图:
查看请求链接
获得请求参数
可以看到请求的参数中有一个很奇怪的参数_signature,且每次请求这个参数都不同,通过查阅gayhub上相关项目资料,发现这个参数是链接中的ID号加密获得,所以接下来可以通过调用加密JS对ID加密,就可以构建一个完整的请求。代码如下:
我们通过查看返回的数据,可以发现正确视频的链接形式如下:
在这里我们可以获得视频的id就可以构建完整的视频链接。代码如下:
我们点击我们上面构建的视频链接,看下页面的具体情况是什么样的。
查看网页返回的信息
我们打开上图红框中的链接,可以看到是视频的资源地址。
打开源视频地址
按照上述的思路,我们可以构建以下的代码:
以上就是下载用户点赞视频的代码,相比于其他功能稍微复杂了点,其他功能通过手机抓包就可以获得请求接口,且没有加密参数。本次的项目代码基本类似,这里就以下载音乐视频的代码为例,讲下抓包部分:
这次使用的抓包工具是Charles,基础的配置可以看下面的文章:
10行代码实现自动参与抽奖助手抽奖(上)
配置好Charles后,打开抖音,通过刷新手机页面,可以看到左边栏的请求链接中有两处链接高亮,Charles截图如下:
Charles截图
点击开响应的数据可以看到每一个链接,我们只要解析每个链接中share_url中包含的videoid,再带入到API中就可以得到真实的视频地址了。
解析图中红框中链接包含的videoid
在测试API时强烈建议可以使用Postman来测试链接的可用性,以减少我们请求的参数数量和测试的复杂度。
测试接口时的部分截图
留心
写给之后的自己
没有用到多线程,下载起来有点慢,只能等到之后完全吃透后再应用上。
尾言
写给公众号的读者
如果对短视频运营感兴趣的朋友可以回复「短视频」获取7天抖音特训营的视频资源,助你成为抖音大V。
我是讲不了段子,编不了故事的咸鱼,这篇文章是咸鱼的第10篇原创文章,感谢大家的支持。
领取专属 10元无门槛券
私享最新 技术干货