Python爬蟲之爬取并下載嗶哩嗶哩視頻

親自使用過,太好用了

# 導入requests模塊,模擬發送請求
import requests
# 導入json
import json
# 導入re
import re# 定義請求頭
headers = {'Accept': '*/*','Accept-Language': 'en-US,en;q=0.5','User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36'
}# 正則表達式,根據條件匹配出值
def my_match(text, pattern):match = re.search(pattern, text)print(match.group(1))print()return json.loads(match.group(1))def download_video(old_video_url, video_url, audio_url, video_name):headers.update({"Referer": old_video_url})print("開始下載視頻:%s" % video_name)video_content = requests.get(video_url, headers=headers)print('%s視頻大小:' % video_name, video_content.headers['content-length'])audio_content = requests.get(audio_url, headers=headers)print('%s音頻大小:' % video_name, audio_content.headers['content-length'])# 下載視頻開始received_video = 0with open('%s_video.mp4' % video_name, 'ab') as output:while int(video_content.headers['content-length']) > received_video:headers['Range'] = 'bytes=' + str(received_video) + '-'response = requests.get(video_url, headers=headers)output.write(response.content)received_video += len(response.content)# 下載視頻結束# 下載音頻開始audio_content = requests.get(audio_url, headers=headers)received_audio = 0with open('%s_audio.mp4' % video_name, 'ab') as output:while int(audio_content.headers['content-length']) > received_audio:# 視頻分片下載headers['Range'] = 'bytes=' + str(received_audio) + '-'response = requests.get(audio_url, headers=headers)output.write(response.content)received_audio += len(response.content)# 下載音頻結束return video_nameif __name__ == '__main__':# 換成你要爬取的視頻地址url ='https://www.bilibili.com/video/BV1zK4y1B7Z8/?share_source=copy_web'# 發送請求,拿回數據res = requests.get(url, headers=headers)# 視頻詳情jsonplayinfo = my_match(res.text, '__playinfo__=(.*?)</script><script>')# 視頻內容jsoninitial_state = my_match(res.text, r'__INITIAL_STATE__=(.*?);\(function\(\)')# 視頻分多種格式,直接取分辨率最高的視頻 1080pvideo_url = playinfo['data']['dash']['video'][0]['baseUrl']# 取出音頻地址audio_url = playinfo['data']['dash']['audio'][0]['baseUrl']video_name = initial_state['videoData']['title']print('視頻名字為:video_name')print('視頻地址為:', video_url)print('音頻地址為:', audio_url)download_video(url, video_url, audio_url, video_name)

它可以爬取并下載視頻文件和音頻文件!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717787.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717787.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717787.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

小米消息隊列的選型與實踐

之前寫了一篇關于消息隊列的文章&#xff1a;《消息隊列介紹與對比》&#xff0c;本文主要介紹消息隊列在實際工作中的使用情況&#xff08;截止到2023年&#xff0c;因為我2023年離職了&#xff0c;后續的情況不了解了&#xff0c;哈哈&#xff09;。 市面上的多種消息隊列都有…

node問題: command not found: nodemon

如何安裝并使用 nodemon npm i -g nodemon 問題與解決方案&#xff1a; 問題&#xff1a;zsh: command not found: nodemon 解決方案&#xff1a; 在你的 package.json 中加入&#xff1a; "scripts": {"auto": "npx nodemon server.js" }…

單例模式及應用場景

如果希望自己的代碼更優雅、可維護性更高以及更簡潔&#xff0c;往往離不開設計模式這一解決方案。 在JS設計模式中&#xff0c;最核心的思想&#xff1a;封裝變化&#xff08;將變與不變分離&#xff0c;確保變化的部分靈活&#xff0c;不變的部分穩定&#xff09;。 那么來…

[嵌入式系統-36]:龍芯1B 開發學習套件 -5- PMON常見命令

目錄 0. 開機時按c鍵進入pmon模式 &#xff08;自啟動模式時&#xff09; 1、幫助命令 h 2、顯示設備信息 devls 3.重啟&#xff1a;reboot 4、設置環境變量 set/unset 5.查詢環境變量&#xff1a;env 6.網絡設置相關命令&#xff1a; ①設置IP&#xff1a;ifconfig&am…

Linux 基礎IO(1)內存文件

文章目錄 鋪墊文件的系統調用接口文件描述符緩沖區 鋪墊 文件文件內容 文件屬性訪問文件之前&#xff0c;都要先打開文件&#xff0c;而要訪問&#xff0c;修改&#xff0c;編輯文件&#xff0c;文件就必須加載到內存中程序運行起來變成進程&#xff0c;被CPU調度&#xff0c;…

詳解Win 7重置電腦操作步驟

文章目錄 介紹Win 7 重置系統的方法&#xff1a;1.按下鍵盤上的Windows鍵和R鍵&#xff0c;打開運行窗口&#xff0c;輸入sysprep 點擊回車確定。2.之后就會出現如下界面&#xff0c;在這個新打開的窗口中雙擊 sysprep 程序3.選擇【進入系統全新體驗&#xff08;00BE) 】&#…

基于SpringBoot的在線拍賣系統(附項目源碼+論文)

摘要 在線拍賣系統&#xff0c;主要的模塊包括管理員&#xff1b;首頁、個人中心、用戶管理、商品類型管理、拍賣商品管理、歷史競拍管理、競拍訂單管理、留言板管理、系統管理&#xff0c;用戶&#xff1b;首頁、個人中心、歷史競拍管理、競拍訂單管理、留言板管理&#xff0…

Linux重新獲取IP地址

你可以通過重啟客戶端來獲取新的IP地址。可以使用以下命令來重啟DHCP客戶端&#xff1a; sudo dhclient -r # 釋放當前IP sudo dhclient # 獲取新的IP 這將釋放當前的IP地址&#xff0c;并請求新的IP地址。 使用ifdown和ifup命令&#xff1a;另一種方法是使用ifdown和i…

STM32學習和實踐筆記(1): 裝好了的keil μVision 5

2019年3月在淘寶上買了這塊STM32的開發板&#xff0c;學了一段時間后就丟下了&#xff0c;今天重新撿起來&#xff0c;決定好好學習、天天向上。 對照教程&#xff0c;今天先把keil5裝上了。 裝的過程有以下幾點值得記錄下&#xff1a; 1&#xff09;用注冊機時&#xff0c;…

【應用多元統計分析】--多元數據的直觀表示(R語言作圖)

例1.2 為了研究全國31個省、市、自治區2018年城鎮居民生活消費的分布規律&#xff0c;根據調查資料做區域消費類型劃分。 指標&#xff1a; 食品x1&#xff1a;人均食品支出(元/人) 衣著x2&#xff1a;人均衣著商品支出(元/人) 居住x3&#xff1a;人均居住支出(元/人) 生活x4…

歐拉回路(Eulerian Path)

1.定義 如果圖 G G G(有向圖或者無向圖)中所有邊一次僅且一次行遍所有頂點的通路稱作歐拉通路。 如果圖 G G G中所有邊一次僅且一次行遍所有頂點的回路稱作歐拉回路。 具有歐拉回路的圖成為歐拉圖(簡稱 E E E圖)。具有歐拉通路但不具有歐拉回路的圖成為半歐拉圖。 頂點可以經…

【Linux】Linux常用指令介紹

目錄 1、whoami命令 2、pwd命令 3、ls命令 4、cd命令 5、touch命令 6、mkdir命令 7、rm命令 8、man命令 9、cp命令 10、mv命令 11、cat命令 12、more命令 13、less命令 14、head命令 15、tail命令 16、find命令 1、whoami命令 語法&#xff1a;whoani 功能&a…

SpringMVC--03--前端傳數組給后臺

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 案例1乘客個人信息方法1&#xff1a;表單提交&#xff0c;以字段數組接收方法2&#xff1a;表單提交&#xff0c;以BeanListModel接收方法3&#xff1a;將Json對象序…

leetcode移除元素

注意&#xff0c;在本題中&#xff0c;是對原數組進行操作&#xff0c;需要原地刪除指定元素&#xff0c;所以我們可以采用快慢指針來操作。 顧名思義&#xff0c;快慢指針是有兩個指針&#xff0c;一直快指針&#xff0c;一個慢指針。在本題中&#xff0c;快慢指針起點都是0&a…

解鎖人體姿態的秘密:部件親和場(PAF)的革新應用

部件親和場(PAF)原理及其在人體姿態估計中的應用 摘要: 隨著人工智能技術的發展,人體姿態估計在計算機視覺領域受到越來越多的關注。部件親和場(Part Affinity Fields,簡稱PAF)作為一種新興的人體姿態估計技術,通過構建2D向量場來描述人體肢體的方向和位置信息,從而…

Matlab 機器人工具箱 運動學

文章目錄 R.fkine()R.ikine()R.ikine6s()R.ikuncR.jacob0、R.jacobn、R.jacob_dotjtrajctraj參考鏈接 官網&#xff1a;Robotics Toolbox - Peter Corke R.fkine() 正運動學&#xff0c;根據關節坐標求末端執行器位姿 mdl_puma560; % 加載puma560模型 qz % 零角度 qr …

繼承(使用及深入、super、重寫/復寫)--學習JavaEE的day14

day14 一、繼承 概念 Java中的繼承是一個對象獲取父對象的所有屬性和行為的機制 理解&#xff1a;繼承是指一個類(子類)可以繼承另一個類(父類)的屬性和方法 關鍵字extends 優點&#xff1a;減少代碼的冗余 缺點&#xff1a;繼承會增加類與類之間的關系&#xff0c;會增加代碼…

[Unity3d] 網絡開發基礎【個人復習筆記/有不足之處歡迎斧正/侵刪】

TCP/IP TCP/IP協議是一 系列規則(協議)的統稱&#xff0c;他們定義了消息在網絡間進行傳輸的規則 是供已連接互聯網的設備進行通信的通信規則 OSI模型只是一個基本概念,而TCP/IP協議是基于這個概念的具體實現 TCP和UDP協議 TCP:傳輸控制協議&#xff0c;面向連接&#xff0c…

VsCode配置PCL、Open3D自動補全

寫在前面 本文內容 在VsCode上開發PCL、Open3D相關代碼&#xff0c;代碼自動補全 Open3D、PCL的安裝使用見各個版本的Open3D、PCL的編譯、使用教程 平臺/環境 windows11(windows10): visual studio 2022&#xff1b;cmake 3.22; VsCode 通過cmake構建項目&#xff1b; 轉載請…

Excel MATCH函數 兩張順序不同表格,統一排序

目錄 一. 背景二. 添加輔助列,使用MATCH函數生成排序條件三. 效果 一. 背景 有如下圖所示的兩張表格&#xff0c;分別記錄著同一批人的1月份和2月份的工資。表格A和表格B中的姓名列相同&#xff0c;工資列數據不同現在要求參考表格A中的姓名列對表格B中的數據進行排序&#xf…