python超細(xì)致帶你批量保存B站美女內(nèi)容~ 快來觀賞叭

前言

嗨嘍!大家好,這里是魔王吶~

在昨天,我快樂刷刷刷得時(shí)候吻贿,有幸刷到一個(gè)非常好看得內(nèi)容

于是我就點(diǎn)開UP主得主頁打算把她得內(nèi)容全部保存下來串结,慢慢欣賞~

現(xiàn)在,我把代碼分享給大家舅列,畢竟肌割,好東西得互相分享,對(duì)不~


首先帐要,我們得做好準(zhǔn)備步驟把敞,盡量跟我得一致哦~

環(huán)境使用:

  • Python 3.8
  • Pycharm 2021.2版本
  • ffmpeg <需要設(shè)置環(huán)境變量> 軟件的使用 合成視頻和音頻

模塊使用:

  • import requests >>> pip install requests

內(nèi)置模塊 你安裝好python環(huán)境就可以了

  • import re
  • import json
  • import subprocess



如果安裝python第三方模塊:

  1. win + R 輸入 cmd 點(diǎn)擊確定, 輸入安裝命令 pip install 模塊名 (pip install requests) 回車
  2. 在pycharm中點(diǎn)擊Terminal(終端) 輸入安裝命令

如何配置pycharm里面的python解釋器?

  1. 選擇file(文件) >>> setting(設(shè)置) >>> Project(項(xiàng)目) >>> python interpreter(python解釋器)
  2. 點(diǎn)擊齒輪, 選擇add
  3. 添加python安裝路徑

pycharm如何安裝插件?

  1. 選擇file(文件) >>> setting(設(shè)置) >>> Plugins(插件)
  2. 點(diǎn)擊 Marketplace 輸入想要安裝的插件名字 比如:翻譯插件 輸入 translation / 漢化插件 輸入 Chinese
  3. 選擇相應(yīng)的插件點(diǎn)擊 install(安裝) 即可
  4. 安裝成功之后 是會(huì)彈出 重啟pycharm的選項(xiàng) 點(diǎn)擊確定, 重啟即可生效

Python的應(yīng)用學(xué)習(xí)方向有哪些?

這里稍微介紹一下,讓你對(duì)python有更詳細(xì)得認(rèn)知~

網(wǎng)站開發(fā):

如目前優(yōu)秀的全棧的 django榨惠、框架flask 奋早,都繼承了python簡(jiǎn)單盛霎、明確的風(fēng)格,開發(fā)效率高耽装、易維護(hù)愤炸,與自動(dòng)化運(yùn)維結(jié)合性好。

python已經(jīng)成為自動(dòng)化運(yùn)維平臺(tái)領(lǐng)域的事實(shí)標(biāo)準(zhǔn)掉奄;

爬蟲程序

在爬蟲領(lǐng)域规个,Python幾乎是霸主地位,將網(wǎng)絡(luò)一切數(shù)據(jù)作為資源姓建,通過自動(dòng)化程序進(jìn)行有針對(duì)性的數(shù)據(jù)采集以及處理诞仓。

從事該領(lǐng)域應(yīng)學(xué)習(xí)爬蟲策略、高性能異步IO速兔、分布式爬蟲等墅拭,并針對(duì)Scrapy框架源碼進(jìn)行深入剖析,從而理解其原理并實(shí)現(xiàn)自定義爬蟲框架憨栽。

數(shù)據(jù)分析

Python語言相對(duì)于其它解釋性語言最大的特點(diǎn)是其龐大而活躍的科學(xué)計(jì)算生態(tài)帜矾,在數(shù)據(jù)分析、交互屑柔、可視化方面有相當(dāng)完善和優(yōu)秀的庫(kù).

自動(dòng)化腳本

執(zhí)行許多重復(fù)的任務(wù)屡萤,例如閱讀 pdf、播放音樂掸宛、查看天氣死陆、打開書簽、清理文件夾等等唧瘾,使用自動(dòng)化腳本

就無需手動(dòng)一次又一次地完成這些任務(wù)措译,非常方便。

人工智能

各種人工智能算法都基于Python編寫饰序,尤其PyTorch之后领虹,Python作為AI時(shí)代頭牌語言的位置基本確定。

游戲開發(fā)/輔助 自動(dòng)化測(cè)試 運(yùn)維

思路流程: <通用>

一. 數(shù)據(jù)來源分析

  1. 確定我們需求 采集什么網(wǎng)站上面的什么數(shù)據(jù)內(nèi)容

  2. 分析我們想要視頻數(shù)據(jù)以及視頻標(biāo)題內(nèi)容 -->> 可以請(qǐng)求那個(gè)網(wǎng)址得到相應(yīng)數(shù)據(jù)內(nèi)容

  3. B站視頻內(nèi)容, 是可以在網(wǎng)頁源代碼有的 搜索playinfo就有相關(guān)數(shù)據(jù)... 通過開發(fā)者工具抓包分析

二. 代碼實(shí)現(xiàn)步驟

  1. 發(fā)送請(qǐng)求, 對(duì)于視頻播放頁面url地址發(fā)送請(qǐng)求 https://www.bilibili.com/video/BV11R4y1L7Fc

  2. 獲取數(shù)據(jù), 獲取網(wǎng)頁源代碼 <有很多數(shù)據(jù)內(nèi)容>

  3. 解析數(shù)據(jù), 提取我們想要數(shù)據(jù)內(nèi)容

  4. 保存數(shù)據(jù), 可以把視頻內(nèi)容保存本地文件夾

代碼

因?qū)徍嗽蚯笤ィ野丫W(wǎng)址刪掉了塌衰,小可耐們可以自己補(bǔ)全哦,也可私信找我領(lǐng)取完整源碼吶~??

代碼大部分我都有寫注釋蝠嘉,希望對(duì)你們有幫助哦~


一最疆、導(dǎo)入模塊

import os
# 導(dǎo)入數(shù)據(jù)請(qǐng)求模塊  <使用請(qǐng)求工具去發(fā)送請(qǐng)求>
import requests
# 導(dǎo)入正則模塊
import re
# 導(dǎo)入json
import json
# 導(dǎo)入格式化輸出模塊
import pprint
# 導(dǎo)入進(jìn)程模塊
import subprocess
import threading

二、對(duì)視頻播放頁面url地址發(fā)送請(qǐng)求

def get_video_content(bv_id):
    """
        爬蟲 模擬瀏覽器對(duì)于url地址發(fā)送請(qǐng)求...
    """
    url = f'{bv_id}'  # 確定網(wǎng)址, 確定自己要網(wǎng)址是那個(gè)
    #  headers請(qǐng)求頭, 用來偽裝python代碼, 防止被服務(wù)器識(shí)別出來是你爬蟲程序.... user-agent 用戶代理 表示瀏覽器基本身份標(biāo)識(shí)
    #  通過requests模塊里面get請(qǐng)求方法<函數(shù)>對(duì)于url地址發(fā)送請(qǐng)求...  等號(hào)左邊的都是自定義變量 不能以數(shù)字開頭  不建議使用關(guān)鍵詞命名
    # 有顏色url是函數(shù)參數(shù) 關(guān)鍵字傳參
    response = requests.get(url=url, headers=headers)  # <Response [200]> 響應(yīng)對(duì)象 200狀態(tài)碼表示請(qǐng)求成功
    print(response)

三蚤告、 獲取數(shù)據(jù)

    # 獲取網(wǎng)頁源代碼 <有很多數(shù)據(jù)內(nèi)容>
    # print(response.text)  # response.text 獲取響應(yīng)對(duì)象文本數(shù)據(jù) >>> 字符串?dāng)?shù)據(jù)

四努酸、解析網(wǎng)站

    """
    提取我們想要數(shù)據(jù)內(nèi)容  re css xpath 建議都要學(xué)習(xí), 選擇最適合用的
    re.findall('"title":"(.*?)",', response.text)
    使用re模塊里面findall<找到所有>方法 從什么地方去找什么數(shù)據(jù)
        從response.text 里面去找 "title":"(.*?)", 其中 (.*?) 這段是我們想要數(shù)據(jù)
    正則匹配提取出來數(shù)據(jù), 返回列表數(shù)據(jù) [0] 根據(jù)索引位置取值, 在python里面索引位置是從0開始計(jì)數(shù)
       程序員本質(zhì) cv工程師...   IT薪資高, 高植發(fā)...
       
       如果你想要就業(yè) 去面試的時(shí)候 理光頭..... 薪資多開5K 
       
    """
    title = re.findall('"title":"(.*?)",', response.text)[0]
    # 前端小知識(shí)點(diǎn) 前端標(biāo)簽兩個(gè)兩個(gè)一起 response.text 字符串類型
    html_data = re.findall('<script>window.__playinfo__=(.*?)</script>', response.text)[0]  # 獲取視頻信息 也是復(fù)制
    # print(html_data)
    # print(type(html_data))  # <class 'str'>  type() 查看數(shù)據(jù)類型
    json_data = json.loads(html_data)  # 轉(zhuǎn)數(shù)據(jù)類型
    # print(json_data)
    # print(type(json_data))  # <class 'dict'> 字典數(shù)據(jù)類型, 字典取值 不會(huì)5 會(huì)6 根據(jù)冒號(hào)左邊的內(nèi)容, 提取冒號(hào)右邊內(nèi)容
    # pprint.pprint(json_data)
    # print(json_data['code'])
    audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
    video_url = json_data['data']['dash']['video'][0]['baseUrl']
    print(audio_url)
    print(video_url)
    print(title)

五、保存數(shù)據(jù)

    # 圖片 視頻 音頻 特定格式文件 都獲取二進(jìn)制數(shù)據(jù)進(jìn)行保存
    # audio_content = requests.get(url=audio_url, headers=headers).content  # response.content 獲取二進(jìn)制數(shù)據(jù)內(nèi)容
    # video_content = requests.get(url=video_url, headers=headers).content  # response.content 獲取二進(jìn)制數(shù)據(jù)內(nèi)容
    # with open('video\\' + title + '.mp3', mode='wb') as f:
    #     f.write(audio_content)
    # with open('video\\' + title + '.mp4', mode='wb') as f:
    #     f.write(video_content)
    #
    # cmd = f"ffmpeg -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4"
    # subprocess.run(cmd, shell=True)
    # os.remove(f'video\\{title}.mp4')
    # os.remove(f'video\\{title}.mp3')


for page in range(1, 13):
    print(f'正在采集第{page}頁數(shù)據(jù)內(nèi)容')
    link = f'/x/space/arc/search?mid=1305006386&ps=30&tid=0&pn={page}&keyword=&order=pubdate&jsonp=jsonp'
    headers = {
        'Referer': '',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    """
    response.text  獲取文本
    response.content 獲取二進(jìn)制
    response.json()  獲取json字典數(shù)據(jù)
    m3u8 
    """
    resp_json = requests.get(url=link, headers=headers).json()
    for index in resp_json['data']['list']['vlist']:
        bv_id = index['bvid']
        print(bv_id)

尾語

成功沒有快車道杜恰,幸福沒有高速路获诈。

所有的成功仍源,都來自不倦地努力和奔跑,所有的幸福都來自平凡的奮斗和堅(jiān)持

——?jiǎng)?lì)志語錄

本文章就寫完啦~感興趣的小伙伴可以復(fù)制代碼去試試

你們的支持是我最大的動(dòng)力@雍伞镜会!記得三連哦~ ?? 歡迎大家閱讀往期的文章呀~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市终抽,隨后出現(xiàn)的幾起案子戳表,更是在濱河造成了極大的恐慌,老刑警劉巖昼伴,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件匾旭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡圃郊,警方通過查閱死者的電腦和手機(jī)价涝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來持舆,“玉大人色瘩,你說我怎么就攤上這事∫菰ⅲ” “怎么了居兆?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)竹伸。 經(jīng)常有香客問我泥栖,道長(zhǎng),這世上最難降的妖魔是什么勋篓? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任吧享,我火速辦了婚禮,結(jié)果婚禮上譬嚣,老公的妹妹穿的比我還像新娘钢颂。我一直安慰自己,他們只是感情好拜银,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布殊鞭。 她就那樣靜靜地躺著,像睡著了一般盐股。 火紅的嫁衣襯著肌膚如雪钱豁。 梳的紋絲不亂的頭發(fā)上耻卡,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天疯汁,我揣著相機(jī)與錄音,去河邊找鬼卵酪。 笑死幌蚊,一個(gè)胖子當(dāng)著我的面吹牛谤碳,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播溢豆,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼蜒简,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了漩仙?” 一聲冷哼從身側(cè)響起搓茬,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎队他,沒想到半個(gè)月后卷仑,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡麸折,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年锡凝,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垢啼。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡窜锯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出芭析,到底是詐尸還是另有隱情锚扎,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布放刨,位于F島的核電站工秩,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏进统。R本人自食惡果不足惜助币,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望螟碎。 院中可真熱鬧眉菱,春花似錦、人聲如沸掉分。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽酥郭。三九已至华坦,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間不从,已是汗流浹背惜姐。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人歹袁。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓坷衍,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親条舔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枫耳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容