大家好,我是辰哥~ 01 獲取搜索鏈接 編寫過接口或者開發(fā)過網(wǎng)站的小伙伴都知道,對(duì)一個(gè)服務(wù)器上的資源進(jìn)行請(qǐng)求時(shí),是通過訪問鏈接(接口),服務(wù)器進(jìn)行響應(yīng)返回?cái)?shù)據(jù)。 1.搜索請(qǐng)求鏈接因此,我們第一步先獲取到搜索的請(qǐng)求鏈接,這里辰哥通過抓取數(shù)據(jù)包的方式進(jìn)行獲取。 這里通過mitmproxy抓取某手小程序,如果不清楚這個(gè)技術(shù)操作的小伙伴,可以參考我之前的一篇文章(以【某程旅行】為例,講述小程序爬蟲技術(shù)),該文章從0到1講解了如何使用mitmproxy采集小程序。 比如搜索:民謠,在抓包頁面查看數(shù)據(jù)包,找到下面這個(gè)數(shù)據(jù)包 點(diǎn)擊數(shù)據(jù)包 可以看到搜索鏈接的請(qǐng)求是post方式,以及請(qǐng)求頭headers和請(qǐng)求參數(shù),請(qǐng)求參數(shù)中keyword是搜索的關(guān)鍵詞,通過修改keyword就可以獲取到不同的內(nèi)容。 2.分析數(shù)據(jù)包通過查看返回的數(shù)據(jù),可以發(fā)現(xiàn)所有的視頻內(nèi)容都在字段feeds中 提取字段:視頻地址、用戶名、封面圖、視頻名稱 mp4_url = i['mainMvUrls'][0]['url'] userName = i['userName'] pic_url = i['coverUrls'][0]['url'] caption = i['caption'] 02 請(qǐng)求數(shù)據(jù) 清楚了數(shù)據(jù)包的請(qǐng)求方式和參數(shù),以及返回的數(shù)據(jù),接著我們開始通過Python去構(gòu)造請(qǐng)求和處理響應(yīng)數(shù)據(jù)。 請(qǐng)求頭和請(qǐng)求參數(shù)
請(qǐng)求地址: url = 'https://wxmini-api./rest/wd/search/feed' r = requests.post(url, data=s,headers=headers).json() 打印輸出結(jié)果: 03 保存數(shù)據(jù) 我們將視頻和對(duì)應(yīng)的封面圖下載保存到本地,這里新建兩個(gè)函數(shù),一個(gè)是下載視頻,一個(gè)是下載封面圖。 下載視頻
下載封面圖 #下載圖片 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)
視頻和封面圖都保存到當(dāng)天日期命名的文件夾中,如果沒有該文件夾則自動(dòng)創(chuàng)建。 調(diào)用這兩個(gè)函數(shù)
執(zhí)行結(jié)束后,保存結(jié)果: 可以看到封面圖和視頻都保存成功!其名為是以視頻名稱對(duì)兩者進(jìn)行命名。 04 小結(jié) 本文講解了某手搜索視頻下載的技術(shù),對(duì)于新手學(xué)習(xí)來說還是一個(gè)不錯(cuò)的可以練習(xí)的小爬蟲,想學(xué)習(xí)的小伙伴,一定要動(dòng)手嘗試!一定要動(dòng)手嘗試!一定要動(dòng)手嘗試! 本文的源碼獲取方式,回復(fù):搜索視頻下載
|
|