日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

搞定!在某手上搜索視頻,并實(shí)現(xiàn)下載

 wxsjbcf 2021-07-25

大家好,我是辰哥~

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ù)

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

請(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_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)

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

調(diào)用這兩個(gè)函數(shù)

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

執(zhí)行結(jié)束后,保存結(jié)果:

圖片

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

04


小結(jié)

本文講解了某手搜索視頻下載的技術(shù),對(duì)于新手學(xué)習(xí)來說還是一個(gè)不錯(cuò)的可以練習(xí)的小爬蟲,想學(xué)習(xí)的小伙伴,一定要動(dòng)手嘗試一定要動(dòng)手嘗試!一定要動(dòng)手嘗試!

本文的源碼獲取方式,回復(fù):搜索視頻下載

為了方便小白Python入門,辰哥已經(jīng)開設(shè)了一個(gè)付費(fèi)會(huì)員一對(duì)一指導(dǎo)、答疑等服務(wù),目前已經(jīng)有部分讀者加入,效果不錯(cuò),感興趣的小伙伴可以聯(lián)系辰哥進(jìn)行咨詢。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多