前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python爬取抖音无水印版短视频

Python爬取抖音无水印版短视频

原创
作者头像
superhua
修改2022-08-28 17:26:14
2.9K00
代码可运行
修改2022-08-28 17:26:14
举报
文章被收录于专栏:CNNCNN
运行总次数:0
代码可运行

在抖音APP中下载的短视频会自带水印,不便于在其他短视频平台转发或二次创造。网络中有一些工具可以根据短视频的链接自动获取无水印版的下载链接,今天我们一起学习如何自己去分析实现无水印版短视频链接获取。

1 分析网页

1.1 获取链接

随意打开一个短视频,点击分享按钮,再点击复制链接。此时可以得到短连接,如下所示:

9.23 BGV:/ 复制打开抖音,看看【海峡新干线的作品】美舰过航台湾海峡,东部战区:随时做好挫败任何挑衅准... https://v.douyin.com/jWqQXB5/

其中,https://v.douyin.com/jWqQXB5/为短链接

1.2 获取短视频真正的存储item_id

在谷歌浏览器中打开短链接,按F12使用手机模式打开,可以看到短链接302重定向到另一个链接:

https://www.iesdouyin.com/share/video/7136807479769386247/?region=CN&mid=7136807568043051784&u_code=126595jei&did=MS4wLjABAAAAvOu2gq0aDfXvv_sjCRN_5OwfnsBAi9TtGvWc457RHToh3rrf4JoISZdmbqJxwPFy&iid=MS4wLjABAAAAtbDB8E08ejXQ1yoNOxKq5GbiJHzUUDqPecmHkHnDXbdJ_eP6Tzd-0MGxEKqBDqLk&with_sec_did=1&titleType=title×tamp=1661672373&utm_campaign=client_share&app=aweme&utm_medium=ios&tt_from=copy&utm_source=copy

如下图所示:

302重定向地址
302重定向地址

这个重定向的链接可以获取到短视频真正的存储item_id,如下图所示:

获取真正的存储ID
获取真正的存储ID

从上图可以得到链接:

https://www.douyin.com/video/7136807479769386247

其中7136807479769386247即为真正的存储ID

1.3 获取无水印短视频下载链接

打开上面地址,可以得到一个接口地址,

https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=7136807479769386247 其中上面的item_ids就是1.2节中介绍的存储ID,如下图所示:

查询接口地址
查询接口地址

打开上面地址得到如下json数据

json数据
json数据

上图中的url_list中的链接即为短视频链接,即:

https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200fg10000cc5gfujc77ufpoqsql6g&ratio=720p&line=0

但是需要注意的是,上面的链接依然是有水印。注意到一个关键字:playwm, 其中wmwatermark缩写,将playwm替换为play即可得到无水印链接

2 代码实现

2.1 获取item_id

短链接中,通过302重定向的url中包含了item_id,因此直接从重定向的链接中获取即可。

代码语言:python
代码运行次数:0
复制
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地址,并获取相应的地址即可,代码如下。

代码语言:python
代码运行次数:0
复制
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 源码获取

  1. 关注公众号:Python学习实战
  2. 公众号聊天界面回复:dyrwm,获取完整源码。

如果本文帮助到了您,辛苦您点个不需花钱的赞,您的举手之劳将对我提供了无限的写作动力! 也欢迎关注我的公众号:Python学习实战, 第一时间获取最新文章。

关注【Python学习实战】
关注【Python学习实战】

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 分析网页
    • 1.1 获取链接
      • 1.2 获取短视频真正的存储item_id
        • 1.3 获取无水印短视频下载链接
        • 2 代码实现
        • 2.1 获取item_id
        • 2.2 获取无水印下载链接
        • 3 源码获取
        相关产品与服务
        对象存储
        对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档