無水印抖音視頻批量下載---基於python爬蟲(全網最簡單方法含詳細解析)


原文鏈接:https://blog.csdn.net/Cool_breeze_bin/article/details/113356288?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-17.control&dist_request_id=1328602.30574.16150346664273767&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-17.control

 

聲明:此教程只用於學習,不可商用

手機操作

首先手機打開抖音,找到作者主頁:
我們以天王“劉德華”抖音為例。

 

第一步,點擊右上角“···”,如下點擊分享:

然后如下圖所示,復制鏈接:

電腦操作

將我們在手機上復制的鏈接通過瀏覽器打開:

我們向下划,發現並沒有真正的頁面內容

這是因為抖音最新加入了網頁隱藏功能,我們打開解析頁也可發現相關內容只有大概框架,並無真實內容。

對於這一問題,我們反復刷新網頁即可(后面代碼實現部分也有對應解決方案):

通過刷新成功后的上圖,我們可以知道這是正確的解析頁。
我們接下來對細分內容進行分析即可。
首先展開“aweme_list”列表進行查看,我們很容易發現:
一共有3行數據,也就是3條視頻,而“desc”對應的參數就是抖音視頻的題目。

 

我們再打開其中一個標簽進行深究,發現如下圖所示:

 

出現“video”標簽,通過英文翻譯也就是“視頻”的意思,
我們通過此標簽繼續深挖,其下一級標簽如下圖所示:

我們又可以找到“play_addr_lowbr”的標簽,進行展開后如下圖所示:

 

通過上圖展開“url_list”標簽,即視頻的訪問地址。
我們只需其中的第一條鏈接即可,將其復制並使用瀏覽器打開,如下圖:

我們看到了無水印的視頻,也就是我們需要的視頻。
網頁分析結束,接下來上代碼。

代碼部分

需要的相關python庫為:requests和json兩個庫

import requests
import json
# 抖音視頻的URL
url="https://www.iesdouyin.com/web/api/v2/aweme/post/?sec_uid=MS4wLjABAAAAU7ibxriLF-GSBF5QKa1Op9hxcMAPVmzmXwXqqvMfrhs&count=21&max_cursor=0&aid=1128&_signature=rrFSDQAAzq.dR1hiGSYhIa6xUh&dytk="

headers = {
    'User-Agent':"Mozilla/5.0 (Macintosh; Intel Mac OS X 11_1_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36"
}
#調用requests中的get獲取抖音作者主頁的網頁鏈接
r = requests.get(url=url, headers=headers,stream=True)
#輸出訪問狀態,如為<200>即為訪問成功
print("初始訪問狀態:",r)
#使用json解析獲取的網頁內容
data_json = json.loads(r.text)
#使用json解析網頁后,data_json的內容為dict格式,我們可以通過以下方式查看健名
print(data_json.keys())
#pd參數為布爾類型參數,data_json['aweme_list'] == []是為了判斷'aweme_list'下一級內容是否為空,為空則為True
pd = data_json['aweme_list'] == []
#接下來使用循環來解決我們之前所提到的“隱藏內容”問題
while pd == True:
#只要“aweme_list”下一級內容為空,則反復訪問作者主頁鏈接,直到成功顯示隱藏內容為止跳出循環
    r = requests.get(url=url, headers=headers,stream=True)
    data_json = json.loads(r.text)
    pd = data_json['aweme_list']== []
#下一級內容不為空,則訪問下一級標簽    
for i in range(len(data_json['aweme_list'])):   
    print(data_json['aweme_list'][i]['video']['play_addr_lowbr']['url_list'][0])

上面所講的url即解析頁中“Headers”下的“requests url”(復制粘貼即可):

 

“headers”內容即“Headers”下“Request Headers”中的“user-agent”:

上面代碼運行結果如下圖所示:

通過上圖,我們發現已經成功得到該作者所有作品鏈接。
接下來就是下載到自己的電腦:

# 我們要保存視頻文件的主要路徑
path = "/··/··/Desktop/"
for i in range(len(data_json['aweme_list'])):
    #url_1為我們獲取的視頻鏈接
    url_1 = data_json['aweme_list'][i]['video']['play_addr_lowbr']['url_list'][0]
    #t為我們獲取的視頻標題
    t = data_json['aweme_list'][i]['desc']
    # requests發送瀏覽器發送get請求,得到數據
    r = requests.get(url=url_1, headers=headers,stream=True)
    print(r)    #輸出r訪問狀態
    # 獲取數據的二進制長度
    reponse_body_lenth = int(r.headers.get("Content-Length"))
    # 打印數據的長度
    print("視頻的數據長度為:", reponse_body_lenth)
    #path_1為完整文件保存路徑
    path_1 = path+t+'.mp4'
    # 保存抖音視頻mp4格式,二進制讀取
    with open(path_1, "wb") as xh:
        # 先定義初始進度為0
        write_all = 0
        for chunk in r.iter_content(chunk_size=1000000):
            write_all += xh.write(chunk)
                # 打印下載進度
            print("下載進度:%02.6f%%" % (100 * write_all / reponse_body_lenth))

運行代碼:

 

 

如上圖所示,下載完畢后,我們便可在桌面找到爬取的無水印的抖音視頻文件(我的path參數指向桌面,路徑可自行修改)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM