怎么使用Python下载抖音无水印视频
怎么使用Python下载抖音无水印视频
小编给大家分享一下怎么使用Python下载抖音无水印视频,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
Python下载
首先来看一下,直接访问抖音链接得到的结果。
妥妥的水印...
接下来打开浏览器的开发者工具,看看视频的地址。
可以发现「playAddr」就是视频的地址,复制然后访问。
链接会重定向到以「v9」开头的链接,然而还是有水印。
接下来就是重点了,首先你需要让你的浏览器能够修改UA,即爬虫经常用到的「User-Agent」。
我用的是Mac+谷歌浏览器,就说说我自己怎么修改的。
Windows的请自行百度~
首先在电脑的文稿中创建一个文件夹。
这个文件夹的路径如下。
/Users/star-river/Documents/MyChrome
并且在根目录的终端运行下面这段代码。
open -n /Applications/Google\ Chrome.app/ --args --disable-web-security --user-data-dir=/Users/star-river/Documents/MyChrome
如此我的谷歌浏览器就能成功更换UA啦!
还是直接访问抖音的链接,可以看到结果和最初的不一样。
就在这个模式下查找接口。
发现「?item_ids」开头的这个接口就包含了我们想要的无水印抖音视频。
就是「play_addr」下的列表中的那两个链接。
其中「?item_ids」开头的这个接口有两个参数需要我们在另一个接口中获取。
这样「item_ids」和「dytk」参数值我们也知道了。
不过我们直接用浏览器访问获取到的那两个链接是不会直接出现视频的,需要和上面的一样。
也改变一下UA,这里的链接如果还用「iPhone X」这个UA访问,会失败。
什么原因,小F就不得而知了...
把浏览器UA改为「Responsive」即可访问,链接会重定向。
这样无水印的抖音视频就搞定了。
不过要是每个视频都需要这么下载,就太麻烦了。
所以写了用Python就可以下载视频的代码。
importrequestsimportjsonimportreheaders={'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/ajpg,*/*;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(Linux;Android6.0;Nexus5Build/MRA58N)AppleWebKit/537.36(KHTML,likeGecko)Chrome/78.0.3904.108MobileSafari/537.36',}defdownload(url):"""下载抖音无水印视频"""#获取接口参数html=requests.get(url=url,headers=headers)title=re.findall('itemId:"(.*?)",',html.text)[0]dytk=re.findall('dytk:"(.*?)"}',html.text)[0]#拼接接口url_item='https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='+title+'&dytk='+dytk#获取抖音无水印视频链接html_item=requests.get(url=url_item,headers=headers)#字符串转字典content=json.loads(html_item.text)#视频接口url_video=content['item_list'][0]['video']['play_addr']['url_list'][1]response=requests.get(url_video,headers=headers,allow_redirects=True)#获取重定向后的链接,这个也是无水印视频的下载链接,不过本次没用redirect=response.urlprint(redirect)#视频是二进制,需要这种下载办法video=requests.get(url_video,headers=headers).contentvideo_name="douyin.mp4"withopen(video_name,'wb')asf:f.write(video)f.flush()print("下载完成")if__name__=='__main__':#抖音链接url='https://v.douyin.com/XJj85H/'download(url)
无水印视频完美下载。
接口下载
既然知道了如何用Python下载视频。
那么小F想让大家下载的更方便一点,所以将程序部署到了服务器上。
你只需要通过小F的接口即可下载视频,代码如下。
fromflaskimportFlask,request,send_fileimportrequestsimportjsonimportreapp=Flask(__name__)#只接受get方法访问@app.route("/douyin/",methods=["GET"])defcheck():headers={'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/ajpg,*/*;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(Linux;Android6.0;Nexus5Build/MRA58N)AppleWebKit/537.36(KHTML,likeGecko)Chrome/78.0.3904.108MobileSafari/537.36',}#默认返回内容return_dict={'code':1,'result':False,'msg':'请求成功'}#判断入参是否为空ifrequest.argsisNone:return_dict['return_code']='504'return_dict['return_info']='请求参数为空'returnjson.dumps(return_dict,ensure_ascii=False)#获取传入的参数get_data=request.args.to_dict()url=get_data.get('url')#获取接口参数html=requests.get(url=url,headers=headers)title=re.findall('itemId:"(.*?)",',html.text)[0]dytk=re.findall('dytk:"(.*?)"}',html.text)[0]#拼接接口url_item='https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='+title+'&dytk='+dytk#获取抖音无水印视频链接html_item=requests.get(url=url_item,headers=headers)#字符串转字典content=json.loads(html_item.text)#获取视频相关的信息#data={}#视频的描述#data['videoDesc']=content['item_list'][0]['desc']#视频的封面图,小图#data['dynamiCoverUrl']=content['item_list'][0]['video']['dynamic_cover']['url_list'][0]#视频的封面图,大图#data['staticCoverUrl']=content['item_list'][0]['video']['origin_cover']['url_list'][0]#视频的评论数#data['comments']=content['item_list'][0]['statistics']['comment_count']#视频的点赞数#data['prise']=content['item_list'][0]['statistics']['digg_count']#视频接口url_video=content['item_list'][0]['video']['play_addr']['url_list'][1]response=requests.get(url_video,headers=headers,allow_redirects=True)#获取重定向后的链接,这个也是无水印视频的下载链接,不过本次没用redirect=response.url#print(redirect)#视频的下载链接#data['videoPlayAddr']=redirect#返回视频的信息#return_dict['result']=data#返回结果#returnjson.dumps(return_dict,ensure_ascii=False)video=requests.get(url=redirect,headers=headers).contentvideo_name="douyin.mp4"withopen(video_name,'wb')asf:f.write(video)f.flush()returnsend_file('douyin.mp4')if__name__=="__main__":#本地调试app.run(debug=True)#部署上线#app.run(host='127.0.0.1',port=443)
如果本地安装了Flask以及Requests库,这个程序是可以直接运行。
并且能够下载到你所想要的无水印抖音视频。
# 本地接口
http://127.0.0.1:500/douyin/?url=https://v.douyin.com/CoQBx1/
部署到服务器上的话,则需要使用443端口。
以上是“怎么使用Python下载抖音无水印视频”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注恰卡编程网行业资讯频道!
推荐阅读
-
python多行注释符号怎么表示
python多行注释符号怎么表示这篇文章主要介绍“python多行...
-
python支持的操作系统是什么
python支持的操作系统是什么这篇文章主要介绍“python支持...
-
python如何判断列表为空
python如何判断列表为空这篇文章主要介绍“python如何判断...
-
Python如何利用D3Blocks绘制可动态交互的图表
-
2021年度编程语言揭晓
-
PPython:PHP 拥抱 Python 的利器
-
哪种Python IDE最适合你?这里有一份优缺点列表
-
Python分隔字符串函数用法split
aaa,bbb=str.split(‘&&’,2)第一个参数为分隔符第二个参数是要完成的最大拆分数...
-
php安全编程——python测试实例编写
-
神奇的Python模块:pdfkit,将Python抓取的网址内容保存pdf文件