python宣传视频 抖音_python实现抖音无水印视频下载_weixin_39786850的博客-程序员宅基地

技术标签: python宣传视频 抖音  

# encoding='utf-8'

import requests

import json

import re

headers = {

'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',

'accept-encoding': 'gzip, deflate, br',

'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',

'cache-control': 'max-age=0',

'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1'

#'cookie':'_ga=GA1.2.1916058393.1585925390; ttwid=1%7CcB4K-RSNyLaXmUwzyMU4cQKqQjad-HMcyJbtLg03s00%7C1597896220%7Cfd5b5e20d168649c1260129c93eaa23bdc677a5253a38114f62a207875cc9e2a; passport_csrf_token=7285824b7e27a76ecee9d6d7bf77e63c; odin_tt=835e397d29269cd78661deff5f8a8b59e89432f2902f89b29e868ad582f78a6c35ea74dbe494c9f9d656778f8b9f8a7f; sso_uid_tt=de877924a7df7c228555dcb1e15fe83c; sso_uid_tt_ss=de877924a7df7c228555dcb1e15fe83c; toutiao_sso_user=1549da1d811fcb6f9c75107ae2fe5fe7; toutiao_sso_user_ss=1549da1d811fcb6f9c75107ae2fe5fe7; passport_auth_status=efc9e9fc48804e02e4de3c3947ec177c%2C9b4ca466759bb37d9a0dca2beb6e01d3; sid_guard=88e517f036ea9dff309e1c54d0a73d6d%7C1603722040%7C5184000%7CFri%2C+25-Dec-2020+14%3A20%3A40+GMT; uid_tt=8b913c22b66ff9be0e68ab46ccc3466e; uid_tt_ss=8b913c22b66ff9be0e68ab46ccc3466e; sid_tt=88e517f036ea9dff309e1c54d0a73d6d; sessionid=88e517f036ea9dff309e1c54d0a73d6d; sessionid_ss=88e517f036ea9dff309e1c54d0a73d6d'

}

def download(url):

"""

下载抖音无水印视频

"""

# 获取接口参数

html =requests.get(url=url, headers=headers)

print(html.status_code)

print(html.history)

print(html.url)

title = re.findall("/video/(.*?)/", html.url)[0]

print(title)

#dytk = re.findall('dytk: "(.*?)" }', html.text)[0]

# 拼接接口

url_item = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids=' + title

# 获取抖音无水印视频链接

html_item = requests.get(url=url_item)

print(html_item.text)

# 字符串转字典

content = json.loads(html_item.text)

print(content)

# 视频接口

url_video = content['item_list'][0]['video']['play_addr']['url_list'][0]

biaoti=content['item_list'][0]['desc']

biaoti=biaoti.replace(' ','').replace('|','')

url_video=url_video.replace('playwm','play') #无水印替换

print(url_video)

response = requests.get(url_video, headers=headers, allow_redirects=True)

redirect = response.url

print(redirect)

# 视频是二进制,需要这种下载办法

video = requests.get(url_video, headers=headers).content

video_name = biaoti+".mp4"

with open(video_name, 'wb') as f:

f.write(video)

f.flush()

print("下载完成")

if __name__ == '__main__':

# 抖音链接

url = 'https://v.douyin.com/JHWny7c/'

download(url)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39786850/article/details/110378556

智能推荐

游戏王生命值计算机,游戏王        直接扣生命值的卡有什么啊_灵台方寸心的博客-程序员宅基地

满意答案secneo3133推荐于 2016.04.01采纳率:41%等级:12已帮助:7960人中文名:隐居者的猛毒药日文名:ご隠居の猛毒薬英文名:----卡种:速攻魔法属性:魔星数:----种族:----攻击力:----防御力:----卡片密码:----使用性:无限制卡包:----效果:从下列效果中选择一项发动.(1)复自己1200LP.(2)给对手造成800点伤害。中文名:小偷矮人日...

QT失去focus后自动隐藏界面_bclshuai的博客-程序员宅基地_qt窗口失去焦点

自己开发了一个股票智能分析软件,功能很强大,需要的点击下面的链接获取:https://www.cnblogs.com/bclshuai/p/11380657.html1.应用场景在一些临时显示的界面,比如声音的调节面板,设置好声音后,不需要手动按钮来控制隐藏,而是离开界面,或者失去focus之后自动隐藏窗口。如下图所示。2.实现方法重写下面两个虚函数,实现离开界面和失去foucs时自动隐藏的功能void leaveEvent(QEvent *e); ...

Springboot Maven yaml 自动多环境打包工具_net_wolf的博客-程序员宅基地

在很多情况下,我们需要为开发环境,集成测试环境,生产环境打包.它们的配置文件有细微的差异,最好是一次能够生产所有环境的war包.比较常见的是设置application.properties中的spring.profiles.active环境变量 但是yml的精简特性很值得称道,用过之后就不能忍受property 文件的臃肿了.试着google基于yml的多环境打包,并没有一个很直观...

随便推点

HBase vs Cassandra: why we moved - wdwbw的专栏 - 博客频道 - CSDN.NET_a13393665983的博客-程序员宅基地

HBase vs Cassandra: why we moved - wdwbw的专栏 - 博客频道 - CSDN.NET HBase vs Cassandra: why we moved - wdwbw的专栏 - 博客频道 - CSDN.NETHBase vs C...

Redis数据结构_dream.未来的博客-程序员宅基地

redis是一种高级的key-value数据库存储系统 其中value值支持物种数据类型 ,key的数据类型一般都是String字符串类型:String散列类型:hash列表类型:list集合类型:set有序集合类型:sorted set对于redis的key值,如果定义的名称过长,查询效率就会降低,所以一般是按照规范命名就可以了。命令ping 就是连接是否成功 显示PONG就表示连接成功redis默认会在空间之中生成16个数据库,数据库编号以此从..

Java学习,基础篇-运算符_你在玩火的博客-程序员宅基地

运算符学习资源:西部开源–秦疆,B站up主‘遇见狂神说’。Java语言支持如下运算符:int a = 10;int b = 21;int c = 100;long d = 10101010101010L;short e = 99;byte f = 1;算术运算符:+,-,*,/,%,++,–System.out.println(a+b);System.out.println(a-b);System.out.println(a*b);System.out.println((do

浪潮受邀出席“市长论坛-深圳智慧城市国际圆桌研讨会”_美通社的博客-程序员宅基地

#subheadlines div {font-size: 17px;} #dvContent table[name=logo_release]+p+div[id^=prni_] {clear:both;} ...

7月第1周 | Crust Network 项目周报_旷工说事的博客-程序员宅基地

01Crust 社区活动01Crust去中心化存储市场已于2月28日正式开放。截至6月28日,全网节点2642个,全网容量达到617PB。目前网络处于代币缺少状态。从5月5日起,Crust Maxwell预览网进行了减产,此后预览网日产出为1500CRU。预览网数据可参考6月第4周周报:02【数据创造价值】活动火热进行中,为了保证活动的公平公正,让更多人能体验到Crust分布式存储的同时获得奖励,Crust技术运营团队已对“数据算力”规则进行优化升级,并立即实施,以遏

Jenkins 踩坑(四)|基于接口自动化测试完成 Jenkins+GitHub+Allure 的结合_普通网友的博客-程序员宅基地

本文为霍格沃兹测试学院优秀学员 Jekins 学习踩坑笔记。测试开发技能进阶,文末加群。一、前提关于使用Jenkins创建job完成自动化测试,核心在于项目的拉取和执行,至于job的创建大同小异,需要了解的可以参考文章: [Jenkins之job创建、参数化与定时构建以及时区偏差填坑]另外还需要的就是执行机的环境(以GitHub拉取项目为例),需要具体细节操作可自行百度Google或参考文章: [Jenkins如何管理、配置、运行node节点,用slave进行分布式运行]* 需要配置`Jav.

推荐文章

热门文章

相关标签