本教程描述的爬取方案定档与2020年10月26日
郑重申明:该文章介绍的技术仅供用于学习,不可恶意攻击各大短视频平台。对各大短视频平台服务器造成的任何损失,后果自负。
Python爬虫:多平台短视频去水印下载器
视频被压缩了,原视频高清地址:https://www.bilibili.com/video/BV1cr4y1w7yz/
转载请标明作者和原文地址~
作者:西涯侠
CSDN个人主页:是西涯侠
文章地址:https://blog.csdn.net/qq_41707308/article/details/109293116
软件界面:
功能介绍
本软件采用Python编写,数据爬取使用requests库,并使用PyQt5编写GUI界面,给普通用户添加易用性:
- 完美去水印 ,收藏好看的视频再也不用担心水印和烦人的片尾;
- 多平台支持 ,支持抖音,快手,微视,皮皮搞笑,涵盖大部分用户常用小视频软件;
- GUI界面设计 ,将会带来快捷易上手体验,小白也会用;
- 增加了 进度条显示 功能,你可以直观的看到程序的运行过程;
- 采取多线程获取进行数据爬取,防止界面假死;
各平台分解
抖音
首先获取分享链接,打开抖音的的一个视频(所有分享视频都可以用同样方法),选择右下角分享按钮,点击复制链接。
获取链接方式:
复制的链接:
通过查看复制的链接可以发现,链接中不单单有URL地址,还夹杂着一些文字符号所以,第一步就是先提取复制的链接中包含的URL地址和文件名:
def compile_name_url(url_text):
# 正则匹配分享链接,获取链接非空字符前的几个字符作为文件名
video_name = re.match(r'\S*', url_text)
if video_name:
video_name = video_name.group()
print(video_name)
# 正则匹配分享链接,获取链接
first_url = re.search(r'https://v.douyin.com/.*?/', url_text)
if first_url:
first_url = first_url.group()
print('第一次url==》', first_url)
return first_url, video_name
将链接复制到浏览器中,抓取数据包分析数据:可以发现,需要的目标视频链接就在第三张图中返回的json数据中,只需要获取对应的字段就行了。
然而事情并没有我们想象的那么简单,抓取了链接后获取到的URL直接复制到浏览器中展示的结果还是有水印的(如下图),仔细观察URL地址,会发现playwm这个字段,而wm就是water mark的缩写,也就是水印。把wm去掉后再次访问,就会得到无水印的地址。大功告成!
代码实现:
def first_request(first_url):
headers = {
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-excha