搞定短視頻!批量下載快手視頻(附源碼)


大家好,我是辰哥~

相信大家都接觸了短視頻平台,比如某音、某手等平台,竟然大家都熟悉了,那么今天辰哥分享的技術是:在某手上搜索視頻,並實現下載!

01 獲取搜索鏈接

編寫過接口或者開發過網站的小伙伴都知道,對一個服務器上的資源進行請求時,是通過訪問鏈接(接口),服務器進行響應返回數據。

1.搜索請求鏈接

因此,我們第一步先獲取到搜索的請求鏈接,這里辰哥通過抓取數據包的方式進行獲取。

這里通過mitmproxy抓取某手小程序,如果不清楚這個技術操作的小伙伴,可以參考我之前的一篇文章(以【某程旅行】為例,講述小程序爬蟲技術),該文章從0到1講解了如何使用mitmproxy采集小程序。

比如搜索:民謠,在抓包頁面查看數據包,找到下面這個數據包

點擊數據包

可以看到搜索鏈接的請求是post方式,以及請求頭headers和請求參數,請求參數中keyword是搜索的關鍵詞,通過修改keyword就可以獲取到不同的內容。

2.分析數據包

通過查看返回的數據,可以發現所有的視頻內容都在字段feeds中

提取字段:視頻地址、用戶名、封面圖、視頻名稱

mp4_url = i['mainMvUrls'][0]['url']
userName = i['userName']
pic_url = i['coverUrls'][0]['url']
caption = i['caption']

02 請求數據

清楚了數據包的請求方式和參數,以及返回的數據,接着我們開始通過Python去構造請求和處理響應數據。

請求頭和請求參數

headers = {
    'content-type':'application/json',
    'cookie':'自己的cookie'
}
s = json.dumps({
    "keyword": "民謠",
    "pcursor": "",
    "ussid": ""
})

請求地址:

url = 'https://wxmini-api.uyouqu.com/rest/wd/search/feed'
r = requests.post(url, data=s,headers=headers).json()

打印輸出結果:

03 保存數據

我們將視頻和對應的封面圖下載保存到本地,這里新建兩個函數,一個是下載視頻,一個是下載封面圖。

下載視頻

#下載視頻
def download_mp4(mp4_name,mp4_url):
    dir = str(time.strftime('%y%m%d', time.localtime()))
    dir_path = "/"+dir
    # 判斷文件夾是否存在
    if not os.path.exists(dir_path):
        os.mkdir(dir_path)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
    }
    r = requests.get(mp4_url, headers=headers, stream=True)
    if r.status_code == 200:
        # 截取圖片文件名
        with open(dir_path+"/"+mp4_name+".mp4", 'wb') as f:
            f.write(r.content)

下載封面圖

#下載圖片
def download_img(img_name,img_url):
    dir = str(time.strftime('%y%m%d', time.localtime()))
    dir_path = "/"+dir
    # 判斷文件夾是否存在
    if not os.path.exists(dir_path):
        os.mkdir(dir_path)
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36'
    }
    r = requests.get(img_url, headers=headers, stream=True)
    if r.status_code == 200:
        # 截取圖片文件名
        with open(dir_path+"/"+img_name+".jpg", 'wb') as f:
            f.write(r.content)
 
 

視頻和封面圖都保存到當天日期命名的文件夾中,如果沒有該文件夾則自動創建。

調用這兩個函數

 #開始下載圖片
download_img(caption,pic_url)
#開始下載視頻
download_mp4(caption,mp4_url)

執行結束后,保存結果:

可以看到封面圖和視頻都保存成功!其名為是以視頻名稱對兩者進行命名。

04 小結

本文講解了某手搜索視頻下載的技術,對於新手學習來說還是一個不錯的可以練習的小爬蟲,想學習的小伙伴,一定要動手嘗試****!一定要動手嘗試****!一定要動手嘗試!

本文的源碼地址:https://gitee.com/lyc96/kuaishoushipinxiazai


免責聲明!

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



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