Scrapy抓取虎牙視頻 —— 舞蹈
目標站:https://v.huya.com/
環(huán)境
Windows 11
Pycharm
Python 3.8.9
Scrapy 2.7.1

思路:
Scrapy的起始頁為:https://v.huya.com/。
頻道頁為:https://v.huya.com/g/all
網(wǎng)頁播放頁為:https://v.huya.com/play/840864137.html,但是通過瀏覽器的開發(fā)者工具并沒有發(fā)現(xiàn)Media的數(shù)據(jù);
用網(wǎng)頁開發(fā)者工具抓包發(fā)現(xiàn)播放請求的真是地址為:https://liveapi.huya.com/moment/getMomentContent?callback=jQuery1124031254075051677055_1678778517216&videoId=840864137&_=1678778517221
callback后的參數(shù)不影響數(shù)據(jù),所以確定最終應該請求數(shù)據(jù)的網(wǎng)址為:https://liveapi.huya.com/moment/getMomentContent?videoId=840864137&_=1678778517221
上面網(wǎng)址出來的數(shù)據(jù)為類似Json格式的
將請求上方網(wǎng)頁的數(shù)據(jù)轉換成Json格式,拿到視頻真實的地址
通過Scrapy請求真實的視頻地址并下載

正文:
數(shù)據(jù)很多,不打算爬取整站,所以以舞蹈頁面為例。打開終端,切換到項目預存放的位置,如D:\Python Projects:
新建項目:
新建爬蟲:

第一步:
找到項目文件夾下的items.py,先來定義要爬取的字段。最終的目的是下載視頻,只需要兩個字段,一個是視頻的名稱,還有一個就是要請求下載的視頻url。代碼如下:

第二步:
找到項目文件夾下的spiders文件夾,選中剛剛創(chuàng)建的爬蟲huya.py。開始爬取內容:

第三步:
pipelines.py

第四步:
寫好之后,在項目文件夾下的settings.py中開啟管道并定義下載存儲的位置:
打開終端,運行:
下載的視頻截圖:

猛然發(fā)現(xiàn)才爬一頁,繼續(xù)切換到爬蟲文件huya.py,在parse方法中定義一下翻頁邏輯:
翻頁的邏輯定義在next_page_urls那個地方,然后請求的時候給自己回調就行了。
如果要爬取整站,這個爬蟲模板就顯得吃力了??梢杂肧crapy的crawl爬蟲模板,制定出爬取規(guī)則,理論上就可以爬取整站了。
最后是翻頁爬取結果,爬了兩分半,下載了將近2G的視頻。速度還是蠻快的。

申明:本文僅是作者的筆記,僅供學習交流使用。