1. 程式人生 > 程式設計 >Python如何實現爬取B站視訊

Python如何實現爬取B站視訊

5月3日晚,央視在《新聞聯播》前播放了B站青年宣言片《後浪》,這是B站首次登陸央視黃金時段,今天在朋友圈陸續看到相關的視訊。最早用B站的同學都知道,B站是和A站以異曲同工的鬼畜視訊及動漫,進入到大眾視野的非主流視訊網站。嗶哩嗶哩現為國內領先的年輕人娛樂、文化社群,該網站於2009年6月26日建立,被粉絲們親切的稱為“B站”。

B站之所以火,是因為趣味與知識並存。它是一個重度宅腐二次元集結地。B站包含動漫、漫畫、遊戲,也有很多由繁到簡、五花八門的視訊,很多冷門的軟體和繪畫技巧在B站都可以找到完整的教學視訊。正如一句“你在B站看番,我在B站學習”,B站還是有一些質量比較好的學習視訊。當你在B站上看到喜歡的視訊想儲存下來時,怎麼辦呢?

轉入正題,本篇推文主要介紹如何將B站上把喜歡的視訊下載下來,幫助更多需要學習的小夥伴,詳細步驟如下:

  • 網頁分析
  • 視訊下載方法
  • 成果展示

微信視訊號的加入,再度引燃了短視訊領域,今天我們爬取B站的每天播放量最多的小視訊,其他型別的視訊可以參考這個方法。

Python如何實現爬取B站視訊

網頁分析

網址為:

'http://vc.bilibili.com/p/eden/rank#/?tab=全部'

我們可以看到Request URL這個屬性值,我們向下滑動載入視訊的過程中,發現只有這段url是不變的。next_offset 會一直變化,我們可以猜測,這個可能就是獲取下一個視訊序號,我們只需要把這部分引數取出來,把 next_offset 寫成變數值,用 JSON 的格式返回到目標網頁即可。

Python如何實現爬取B站視訊

Python如何實現爬取B站視訊

視訊下載方法

上一部分已對網頁進行了分析,現在我們可以利用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下載視訊的方法,下面我們進行效果展示

Python如何實現爬取B站視訊

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。