您好,登錄后才能下訂單哦!
小編給大家分享一下怎么使用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就可以下載視頻的代碼。
import requests import json import re 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; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36', } def download(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.url print(redirect) # 視頻是二進制,需要這種下載辦法 video = requests.get(url_video, headers=headers).content video_name = "douyin.mp4" with open(video_name, 'wb') as f: f.write(video) f.flush() print("下載完成") if __name__ == '__main__': # 抖音鏈接 url = 'https://v.douyin.com/XJj85H/' download(url)
無水印視頻完美下載。
既然知道了如何用Python下載視頻。
那么小F想讓大家下載的更方便一點,所以將程序部署到了服務器上。
你只需要通過小F的接口即可下載視頻,代碼如下。
from flask import Flask, request, send_file import requests import json import re app = Flask(__name__) # 只接受get方法訪問 @app.route("/douyin/", methods=["GET"]) def check(): 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; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Mobile Safari/537.36', } # 默認返回內容 return_dict = {'code': 1, 'result': False, 'msg': '請求成功'} # 判斷入參是否為空 if request.args is None: return_dict['return_code'] = '504' return_dict['return_info'] = '請求參數為空' return json.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 # 返回結果 # return json.dumps(return_dict, ensure_ascii=False) video = requests.get(url=redirect, headers=headers).content video_name = "douyin.mp4" with open(video_name, 'wb') as f: f.write(video) f.flush() return send_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下載抖音無水印視頻”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。