Python如何實現爬取B站視訊
5月3日晚,央視在《新聞聯播》前播放了B站青年宣言片《後浪》,這是B站首次登陸央視黃金時段,今天在朋友圈陸續看到相關的視訊。最早用B站的同學都知道,B站是和A站以異曲同工的鬼畜視訊及動漫,進入到大眾視野的非主流視訊網站。嗶哩嗶哩現為國內領先的年輕人娛樂、文化社群,該網站於2009年6月26日建立,被粉絲們親切的稱為“B站”。
B站之所以火,是因為趣味與知識並存。它是一個重度宅腐二次元集結地。B站包含動漫、漫畫、遊戲,也有很多由繁到簡、五花八門的視訊,很多冷門的軟體和繪畫技巧在B站都可以找到完整的教學視訊。正如一句“你在B站看番,我在B站學習”,B站還是有一些質量比較好的學習視訊。當你在B站上看到喜歡的視訊想儲存下來時,怎麼辦呢?
轉入正題,本篇推文主要介紹如何將B站上把喜歡的視訊下載下來,幫助更多需要學習的小夥伴,詳細步驟如下:
- 網頁分析
- 視訊下載方法
- 成果展示
微信視訊號的加入,再度引燃了短視訊領域,今天我們爬取B站的每天播放量最多的小視訊,其他型別的視訊可以參考這個方法。
網頁分析
網址為:
'http://vc.bilibili.com/p/eden/rank#/?tab=全部'
我們可以看到Request URL這個屬性值,我們向下滑動載入視訊的過程中,發現只有這段url是不變的。next_offset 會一直變化,我們可以猜測,這個可能就是獲取下一個視訊序號,我們只需要把這部分引數取出來,把 next_offset 寫成變數值,用 JSON 的格式返回到目標網頁即可。
視訊下載方法
上一部分已對網頁進行了分析,現在我們可以利用requests.get方法來獲取B站上的小視訊。
核心程式碼
def get_json(url): headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/69.0.3497.100 Safari/537.36' } params = { 'page_size': 10,'next_offset': str(num),'tag': '今日熱門','platform': 'pc' } try: html = requests.get(url,params=params,headers=headers) return html.json() except BaseException: print('request error') pass def download(url,path): start = time.time() # 開始時間 size = 0 headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/69.0.3497.100 Safari/537.36' } response = requests.get(url,headers=headers,stream=True) chunk_size = 1024 content_size = int(response.headers['content-length']) if response.status_code == 200: with open(path,'wb') as file: for data in response.iter_content(chunk_size=chunk_size): file.write(data) size += len(data)
成果展示
上一部分我們已經展示瞭如何用Python下載視訊的方法,下面我們進行效果展示
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。