抖音上学python靠谱吗_用 Python 下载抖音无水印视频

说起抖音,大家或多或少应该都接触过,如果大家在上面下载过视频,一定知道我们下载的视频是带有水印的,那么我们有什么方式下载不带水印的视频呢?其实用 Python 就可以做到,下面我们来看一下。

首先,我们打开抖音随意找一个视频,如下图所示:

然后点击分享按钮,找到复制链接选项,如下图所示:

接着,我们点击按钮复制链接,比如我复制的链接为: https://v.douyin.com/JePfx5f/ ,然后我们将链接复制到谷歌浏览器上,按 F12 打开开发者工具,再切换到移动设备,选择 Network,如下图所示:

我们接着按回车键进行访问,然后在 Filter 中输入 item,进而我们可以找到 item_ids 和 dykt,如下图所示:

再切换到 Preview,我们可以发现有一个 play_addr,如下图所示:

我们通过 play_addr 就可以下载无水印视频了。

看一下主要实现代码:

share_url = "https://v.douyin.com/JePfx5f/"

# 获取 itemId、dytk

get = requests.get(share_url, headers=headers)

html = get.content

itemId = re.findall(r"(?<=itemId:\s\")\d+", str(html))

dytk = re.findall(r"(?<=dytk:\s\")(.*?)(?=\")", str(html))

# 组装视频长链接

long_url = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids="+itemId[0]+"&dytk="+dytk[0]

# 请求长链接,获取 play_addr

video_open = requests.get(long_url, headers=headers)

vhtml = video_open.text

uri = re.findall(r'(?<=\"uri\":\")\w{32}(?=\")', str(vhtml))

# video_id 是长链接唯一变动的,提取出 uri 进行组装得到最终链接

play_addr = "https://aweme.snssdk.com/aweme/v1/play/?video_id="+uri[0]+\

"&line=0∶=540p&media_type=4&vr_type=0&improve_bitrate=0&is_play_url=1&is_support_h265=0&source=PackSourceEnum_PUBLISH"

# 保存短视频

video = requests.get(url=play_addr, headers=headers)

with open("download.mp4", "wb") as file:

file.write(video.content)

file.close()

print("抖音无水印视频下载完成!")

专门建立的Python学习扣扣圈,从零基础开始到Python各领域的项目实战教程、开发工具与电子书籍。与你分享企业当下对于python人才需求及学好python的高效技巧,不停更新最新教程!点击加入我们的python学习圈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
水印视频下载可以通过调用API接口实现。可以使用Python或Java编写相关代码。 Python实现: ``` import requests import json url = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?itemId=' item_id = '视频ID' headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' } response = requests.get(url=url+item_id, headers=headers) data = json.loads(response.text) video_url = data['item_list'][0]['video']['play_addr']['url_list'][0] video = requests.get(video_url, headers=headers) with open('video.mp4', 'wb') as f: f.write(video.content) ``` Java实现: ``` import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; public class DownloadVideo { public static void main(String[] args) throws IOException { String url = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?itemId="; String item_id = "视频ID"; String user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"; String video_url = ""; URL real_url = new URL(url+item_id); HttpURLConnection connection = (HttpURLConnection) real_url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", user_agent); connection.setRequestProperty("Accept", "*/*"); connection.setRequestProperty("Content-Type", "application/json"); connection.setRequestProperty("Connection", "keep-alive"); connection.connect(); InputStream in = connection.getInputStream(); byte[] buf = new byte[1024]; int len = 0; StringBuffer stringBuffer = new StringBuffer(); while((len=in.read(buf))!=-1){ stringBuffer.append(new String(buf,0,len)); } in.close(); JSONObject jsonObject = JSON.parseObject(stringBuffer.toString()); video_url = jsonObject.getJSONObject("item_list").getJSONObject("video").getJSONArray("play_addr").getJSONObject(0).getString("url_list").get(0); real_url = new URL(video_url); connection = (HttpURLConnection) real_url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("User-Agent", user_agent); connection.setRequestProperty("Accept", "*/*"); connection.setRequestProperty("Content-Type", "application/octet-stream"); connection.setRequestProperty("Connection", "keep-alive"); connection.connect(); in = connection.getInputStream(); FileOutputStream out = new FileOutputStream("video.mp4"); while((len=in.read(buf))!=-1){ out.write(buf,0,len); } in.close(); out.close(); } } ``` 注意:以上代码仅供学习参考,请勿用于非法用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值