Python爬取抖音无水印版短视频
在抖音APP
中下载的短视频会自带水印,不便于在其他短视频平台转发或二次创造。网络中有一些工具可以根据短视频的链接自动获取无水印版的下载链接,今天我们一起学习如何自己去分析并实现无水印版短视频链接获取。
1 分析网页
1.1 获取链接
随意打开一个短视频,点击分享按钮,再点击复制链接。此时可以得到短连接,如下所示:
9.23 BGV:/ 复制打开抖音,看看【海峡新干线的作品】美舰过航台湾海峡,东部战区:随时做好挫败任何挑衅准... https://v.douyin.com/jWqQXB5/
其中,https://v.douyin.com/jWqQXB5/
为短链接
1.2 获取短视频真正的存储item_id
在谷歌浏览器中打开短链接,按F12
使用手机模式打开,可以看到短链接302重定向到另一个链接:
如下图所示:
这个重定向的链接可以获取到短视频真正的存储item_id,如下图所示:
从上图可以得到链接:
其中7136807479769386247
即为真正的存储ID
。
1.3 获取无水印短视频下载链接
打开上面地址,可以得到一个接口地址,
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=7136807479769386247 其中上面的item_ids就是1.2节中介绍的存储ID,如下图所示:
打开上面地址得到如下json数据
上图中的url_list中的链接即为短视频链接,即:
但是需要注意的是,上面的链接依然是有水印。注意到一个关键字:playwm
, 其中wm
为watermark
缩写,将playwm
替换为play
即可得到无水印链接
2 代码实现
2.1 获取item_id
短链接中,通过302重定向的url中包含了item_id,因此直接从重定向的链接中获取即可。
def get_item_id(short_url):
res = http_get(short_url)
item_id = re.findall(r"(?<=video/)\d+", res.url)[0]
return item_id
2.2 获取无水印下载链接
根据item_id,直接组装api地址,并获取相应的地址即可,代码如下。
def get_play_url(item_id):
api_url = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=" + item_id
api = http_get(api_url).text
api = json.loads(api)
playwm = api['item_list'][0]['video']['play_addr']['url_list'][0]
play = playwm.replace('/playwm/', '/play/')
return play
3 源码获取
- 关注公众号:
Python学习实战
- 公众号聊天界面回复:
dyrwm
,获取完整源码。
如果本文帮助到了您,辛苦您点个不需花钱的赞,您的举手之劳将对我提供了无限的写作动力! 也欢迎关注我的公众号:Python学习实战, 第一时间获取最新文章。
相关文章
- 【Python秒杀脚本】淘宝或京东等秒杀抢购
- 王力宏的瓜很大!我用Python爬取了瓜文评论区,发现更精彩
- python报错invalid syntax_fatal python error
- 做自动化测试选择Python还是Java?
- python粒子群算法的实现「建议收藏」
- python中字符转换
- python转置矩阵函数_对python 矩阵转置transpose的实例讲解
- Python负数取余总结
- 用Python写个魂斗罗
- Python元祖详解
- 2022春节贺岁档电影开分,水门桥不理想,四海崩了!用Python一探究竟
- 第一章:起步(python环境搭建)
- 绘图技巧 |Bokeh超强交互式Python可视化库作品分享
- Python 从底层结构聊 Beautiful Soup 4(内置豆瓣最新电影排行榜爬取案例)!
- Python-基础05-字符编码
- Python日志管理
- 干货 | OpenCV获取不规则区域的最大内切圆(附Python / C++ 源码)
- 用Python画一棵带音乐的雪夜圣诞树
- Python 爬取 "王者荣耀.英雄壁纸" 过程中的矛和盾
- 在树莓派中使用 MicroPython 接入 MQTT