
大家好,我是辰哥~
相信大家都接觸了短視頻平台,比如某音、某手等平台,竟然大家都熟悉了,那么今天辰哥分享的技術是:在某手上搜索視頻,並實現下載!
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 小結
本文講解了某手搜索視頻下載的技術,對於新手學習來說還是一個不錯的可以練習的小爬蟲,想學習的小伙伴,一定要動手嘗試****!一定要動手嘗試****!一定要動手嘗試!
