python對(duì)虎牙進(jìn)行小姐姐視頻采集,舞蹈區(qū)內(nèi)容真熱鬧~

前言

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


環(huán)境使用:

  • Python 3.8 解釋器<運(yùn)行代碼>

  • Pycharm 編輯器 <寫代碼>


模塊使用]:

  • requests >>> 數(shù)據(jù)請(qǐng)求 第三方模塊 pip install requests <工具>
  • re <正則表達(dá)式模塊>

如果安裝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)擊確定, 重啟即可生效

基本思路流程:

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

找尋網(wǎng)址上面視頻數(shù)據(jù)來自于哪里

開發(fā)者工具進(jìn)行抓包..

  1. 鼠標(biāo)右鍵點(diǎn)擊檢查 或者 F12打開開發(fā)者工具
  2. 刷新網(wǎng)頁
  3. 找尋視頻數(shù)據(jù)...<通過media里找尋視頻url地址>
  4. 找視頻url地址來于那個(gè)數(shù)據(jù)包 >>> 通過視頻url地址中一段參數(shù)進(jìn)行搜索, 建議是搜.mp4前面這段內(nèi)容...

二, 代碼實(shí)現(xiàn)過程: 對(duì)于某些網(wǎng)站 可能需要多次請(qǐng)求,

  1. 發(fā)送請(qǐng)求, 對(duì)于找到視頻數(shù)據(jù)包發(fā)送請(qǐng)求
  2. 獲取數(shù)據(jù), 獲取服務(wù)器返回響應(yīng)數(shù)據(jù)
  3. 解析數(shù)據(jù), 提取我們想要數(shù)據(jù)內(nèi)容 視頻url地址 視頻標(biāo)題
    ....
  4. 保存數(shù)據(jù), 保存視頻數(shù)據(jù)到本地文件夾

多個(gè)視頻采集 <視頻數(shù)據(jù)包url地址變化規(guī)律>


代碼

導(dǎo)入模塊

# import requests
import requests  # 數(shù)據(jù)請(qǐng)求模塊
import pprint  # 格式化輸出模塊
import re
for page in range(2, 6):
    print(f'正在采集第{page}頁的數(shù)據(jù)內(nèi)容')
    link = f'https://v.huya.com/g/all?set_id=51&order=hot&page={page}'
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
    }
    html_data = requests.get(url=link, headers=headers).text
    # print(html_data)
    # 使用re正則表達(dá)式提取數(shù)據(jù) 從什么地方去獲取什么數(shù)據(jù)
    # <li data-vid="(\d+)"><a href=".*?"  加了括號(hào)是我們想要數(shù)據(jù)內(nèi)容 \d+ 匹配多個(gè)數(shù)字 .*? 可以匹配任意字符(除了換行符\n)
    video_id_list = re.findall('<li data-vid="(\d+)"><a href=".*?"', html_data)
    print(video_id_list)
    for video_id in video_id_list:
        url = f'https://liveapi.huya.com/moment/getMomentContent?videoId={video_id}&uid=&_=1654949607282'
        # 偽裝python代碼  在開發(fā)者工具里復(fù)制 user-agent 用戶代理 表示瀏覽器基本身份表示
        # headers請(qǐng)求頭, 可以python代碼偽裝成瀏覽器對(duì)于url地址發(fā)送請(qǐng)求 <作用防止被識(shí)別出來是爬蟲程序>
        # cookie 用戶信息, 常用于檢測是否登陸賬號(hào) <無論登陸與否 都有一個(gè)cookie>
        # headers = {
        #     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'
        # }
        # 通過requests模塊里面get請(qǐng)求方法對(duì)于url地址發(fā)送請(qǐng)求, 并且攜帶上headers請(qǐng)求頭偽裝, 最后用自定義變量response接受返回?cái)?shù)據(jù)
        response = requests.get(url=url, headers=headers)
        # print(response.json())  # <Response [200]> 200表示請(qǐng)求成功 response.json() 返回?cái)?shù)據(jù)一定是完整json數(shù)據(jù)格式
        # pprint.pprint(response.json())
        # 解析數(shù)據(jù) 字典取值  根據(jù)鍵值對(duì)取值 {'鍵': '值', '鍵1': '值1'} 根據(jù)冒號(hào)左邊的內(nèi)容<鍵>, 提取冒號(hào)右邊的內(nèi)容<值>
        title = response.json()['data']['moment']['title']
        title = re.sub(r'[\/:*?"<>|\n\r\t]', '', title)
        video_url = response.json()['data']['moment']['videoInfo']['definitions'][0]['url']
        print(title)
        print(video_url)
        # 保存數(shù)據(jù) 需要對(duì)于視頻播放地址, 發(fā)送請(qǐng)求獲取數(shù)據(jù)內(nèi)容
        video_content = requests.get(url=video_url, headers=headers).content
        with open('video\\' + title +video_id + '.mp4', mode='wb') as f:  # as 重命名為 f
            f.write(video_content)

        # f = open('video\\' + title + '.mp4', mode='wb')
        # f.write(video_content)
        # f.close()

尾語

成功沒有快車道馅闽,幸福沒有高速路砚蓬。

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

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

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

你們的支持是我最大的動(dòng)力N龌帧墨坚!記得三連哦~ ?? 歡迎大家閱讀往期的文章呀~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市映挂,隨后出現(xiàn)的幾起案子泽篮,更是在濱河造成了極大的恐慌盗尸,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咪辱,死亡現(xiàn)場離奇詭異振劳,居然都是意外死亡椎组,警方通過查閱死者的電腦和手機(jī)油狂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寸癌,“玉大人专筷,你說我怎么就攤上這事≌粑” “怎么了磷蛹?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長溪烤。 經(jīng)常有香客問我味咳,道長,這世上最難降的妖魔是什么檬嘀? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任槽驶,我火速辦了婚禮,結(jié)果婚禮上鸳兽,老公的妹妹穿的比我還像新娘掂铐。我一直安慰自己,他們只是感情好揍异,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布全陨。 她就那樣靜靜地躺著,像睡著了一般衷掷。 火紅的嫁衣襯著肌膚如雪辱姨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天戚嗅,我揣著相機(jī)與錄音雨涛,去河邊找鬼。 笑死渡处,一個(gè)胖子當(dāng)著我的面吹牛镜悉,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播医瘫,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼侣肄,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了醇份?” 一聲冷哼從身側(cè)響起稼锅,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤吼具,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后矩距,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拗盒,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年锥债,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了陡蝇。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡哮肚,死狀恐怖登夫,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情允趟,我是刑警寧澤恼策,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站潮剪,受9級(jí)特大地震影響涣楷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜抗碰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一狮斗、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧改含,春花似錦情龄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鹃觉,卻和暖如春专酗,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盗扇。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工祷肯, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疗隶。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓佑笋,卻偏偏與公主長得像,于是被迫代替她去往敵國和親斑鼻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒋纬,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

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