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’) passdef 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下載視頻的方法,下面我們進行效果展示
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。
相關文章:
1. 解決docker與vmware的沖突問題2. Django中的AutoField字段使用3. Python基于jieba, wordcloud庫生成中文詞云4. IntelliJ Idea 2020.1 正式發布,官方支持中文(必看)5. IntelliJ IDEA設置自動提示功能快捷鍵的方法6. asp.net core應用docke部署到centos7的全過程7. Java 3D的動畫展示(Part1-使用JMF)8. Django ORM實現按天獲取數據去重求和例子9. 刪除docker里建立容器的操作方法10. java使用FFmpeg合成視頻和音頻并獲取視頻中的音頻等操作(實例代碼詳解)
