MATLAB爬蟲程序 | 批量獲取文本、圖片和視頻

圖圖今天來聊聊基于MATLAB的爬蟲,互聯(lián)網(wǎng)上真不多見。
下方是圖圖爬取的成果!
隨時(shí)感知所有視頻,點(diǎn)擊超鏈接直接觀看

批量獲取封面圖片,對(duì)不住了‘畢導(dǎo)’

批量下載視頻,B站大學(xué)變離線

1. 爬蟲是什么?
????爬蟲是用編程語言構(gòu)造的檢索引擎,它模擬人的瀏覽行為去各個(gè)網(wǎng)站溜達(dá),到處點(diǎn)點(diǎn)按鈕、查查數(shù)據(jù),然后把看到的有用信息背回來。就像一只“蜘蛛”(爬蟲)在“網(wǎng)上”(互聯(lián)網(wǎng))爬來爬去。一旦搜集到的信息足夠多,就形成了巨大的價(jià)值!
每天使用的搜索引擎,其實(shí)就是利用了這種爬蟲技術(shù):每天放出無數(shù)爬蟲到各個(gè)網(wǎng)站,把他們的信息抓回來,然后排著小隊(duì)等你來檢索。
搶票軟件,幫助你不斷刷新12306網(wǎng)站的火車余票。一旦發(fā)現(xiàn)有票,就馬上拍下來,然后對(duì)你喊:快來付款。
????對(duì)于個(gè)人使用者來說,爬蟲的作用無非是搜集數(shù)據(jù)!圖圖寫爬蟲程序的出發(fā)點(diǎn)也是搜集自己在B站發(fā)布的視頻與視頻封面,方便自己進(jìn)行統(tǒng)計(jì)。
????網(wǎng)絡(luò)上關(guān)于Python
的爬蟲程序鋪天蓋地,但基于MATLAB制作的爬蟲程序少之又少,今天圖圖來貢獻(xiàn)自己的一份力,降低大家的學(xué)習(xí)成本。爬取的目標(biāo)是B站
,僅對(duì)自己感興趣的數(shù)據(jù)進(jìn)行了爬取,包括
視頻UP主
視頻標(biāo)題
視頻封面(網(wǎng)址)
視頻鏈接
形成了EXCEL表格
同時(shí)將視頻的封面和視頻本身下載到了一起
其它內(nèi)容原理都是一樣的,如果需要更多數(shù)據(jù),只要進(jìn)行簡(jiǎn)單的輸出即可!
2. 爬取B站的原理
總體步驟:輸入U(xiǎn)P主的編號(hào)與視頻編號(hào),不斷變換、拼接成為路徑
url
,通過MATLAB去模擬瀏覽器訪問url
。將訪問得到的信息進(jìn)行整理得到自己想要的關(guān)鍵內(nèi)容,利用MATLAB輸出關(guān)鍵內(nèi)容。
因?yàn)樵敿?xì)的教程已經(jīng)錄制了視頻:

所以圖圖此處就列出一些關(guān)鍵點(diǎn),重點(diǎn)需要關(guān)注的有如下信息:
2.1 UP主的mid
mid在UP主個(gè)人空間的主頁(yè)鏈接中

2.2 一條視頻的bvid
bvid在視頻播放頁(yè)的地址欄中
有了
mid
和bvid
就基本確定了任意一條視頻

2.3?F12
進(jìn)入開發(fā)者模式查看網(wǎng)頁(yè)代碼

3. 爬取B站的MATLAB代碼
須知
編寫環(huán)境:MATLAB 2020a
低于MATLAB 2016a確定無法運(yùn)行
因?yàn)槠渲姓{(diào)用了webread()等函數(shù)
3.1 主函數(shù) main()
主函數(shù)主要是用于確定爬取的對(duì)象,控制爬取的過程,以及決定要保存哪些文件。
A-B-C-D-E-F-G只是為了方便閱讀而拆分,實(shí)際是按順序書寫在同一個(gè)文件中的。
重點(diǎn)關(guān)注的輸入?yún)?shù)就是mid
,即你要爬取哪一個(gè)UP主,其它的參數(shù)基本都可以不動(dòng)。delaytime
用于設(shè)置訪問的時(shí)間間隔,防止IP被封。qn
控制下載視頻的清晰度。
在C部分具有?options
選項(xiàng)用于設(shè)置一些訪問的方式,有興趣的可以參考Python中有關(guān)的介紹——requests
。
D部分用于訪問獲取所需的數(shù)據(jù)data,其中就包含了封面圖鏈接和視頻鏈接(播放頁(yè)面的鏈接而不是下載鏈接)。
data是一個(gè)結(jié)構(gòu)體,其具體形式如下:


A
B
C
D
E
F
G
3.2 訪問得到數(shù)據(jù)getBiliData()
用到的核心函數(shù)是webread()

詳細(xì)介紹的網(wǎng)址;
3.3 生成文本文件
saveCon(data)
3.3 獲取圖片
????保存圖片相對(duì)簡(jiǎn)單,我們只需使用websave()將圖片存到本地的指定路徑即可。
3.4?獲取視頻文件
????保存視頻文件比較復(fù)雜,B站進(jìn)行了層層加密,我們需要不斷的改變參數(shù)進(jìn)行訪問,最后再使用websave()將視頻存到本地的指定路徑。
????具體的步驟如下:
A?創(chuàng)建文件夾
B?與上一期相同,設(shè)置訪問的UserAgent
C?獲取cid
,是一個(gè)訪問參數(shù),但是不是顯示的
D?獲取視頻的下載鏈接(加密的)
E?用referer
去訪問加密的下載鏈接得到視頻
關(guān)注公眾號(hào)“圖通道” 回復(fù)?爬蟲?獲取文中完整代碼!
圖圖的MATLAB交流群?1129425848
獲取圖圖全部干貨內(nèi)容?公眾號(hào)“圖通道”后臺(tái)回復(fù)?全家桶計(jì)劃