Python爬取虎牙視頻
前言:
虎牙有很多優(yōu)質(zhì)的視頻,周末無事嘛,來采一些優(yōu)質(zhì)博主發(fā)布的優(yōu)質(zhì)視頻養(yǎng)養(yǎng)眼。今天爬的影視板塊,有些電影還是有回憶殺的?;⒀酪曨l地址:https://v.huya.com/。
思路:
????先點(diǎn)開虎牙視頻的‘影視’鏈接,選擇‘最多播放’,這是今天要采的板塊兒;
????點(diǎn)開一個(gè)單獨(dú)的視頻,跳轉(zhuǎn)到視頻播放頁面,F(xiàn)12(chrome瀏覽器),找到network-media,視頻地址出現(xiàn);
????選中視頻地址中的部分字符串,在開發(fā)者工具里查找,查找視頻真實(shí)地址的來源,也就是視頻真實(shí)地址的存放地址,爬蟲需要請求的地方;
????視頻存放地址的請求地址:https://liveapi.huya.com/moment/getMomentContent?callback=jQuery1124024533350877780635_1652492984447&videoId=663219021&uid=1197912393&_=1652492984458;
????多點(diǎn)開幾個(gè),發(fā)現(xiàn)只有videoId=663219021這個(gè)字段會變化;
? ? 規(guī)律出現(xiàn);視頻列表頁-視頻播放頁-視頻請求的播放地址-播放地址找播放源-python請求播放源-提取json數(shù)據(jù)
圖片配合思路:


接下來要做的就是利用Python構(gòu)造請求視頻播放源,然后提取想要的數(shù)據(jù)。
上碼:
函數(shù)執(zhí)行順序:
????1, _main()主函數(shù);
????2,調(diào)用Python多線程的高級模塊concurrent.futures.ThreadPoolExecutor
????3,parse_page()解析視頻列表頁面函數(shù);
????4,get_json() 提取視頻源頁面json數(shù)據(jù)函數(shù);
????5,save_media() 保存視頻函數(shù);
????6,get_response() 獲取網(wǎng)頁響應(yīng)函數(shù);
因?yàn)檎埱笠曨l源頁面需要cookie,也就是需要登錄,所以第一個(gè)函數(shù)get_response()并不能完成視頻數(shù)據(jù)源的請求任務(wù),于是多寫了一個(gè)獲取網(wǎng)頁響應(yīng)數(shù)據(jù)(請求視頻播放源的數(shù)據(jù))的函數(shù)get_json()。
兩張截圖,顯示程序運(yùn)行正常:


打完收工。昨天RNG重賽了,因?yàn)槿^官方收到隔壁賽區(qū)的LCK的投訴,說*aker和小*布的ping值達(dá)到了80,影響了比賽結(jié)果。然后昨天我gala又拿了個(gè)五殺。就問要拿幾個(gè)五殺才能不重賽。我要去剪五殺了。