Python采集B站最新周杰倫MV內(nèi)容, 粉絲評(píng)論 并實(shí)現(xiàn)詞云分析

前言

大家早好婴渡、午好幻锁、晚好吖~
[圖片上傳失敗...(image-98132a-1657699277011)]

環(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(終端) 輸入安裝命令

基本思路流程:

采集視頻數(shù)據(jù).... 1. 視頻標(biāo)題 2. 視頻內(nèi)容

1、對(duì)著網(wǎng)頁(yè) 鼠標(biāo)右鍵點(diǎn)擊查看網(wǎng)頁(yè)源代碼 ctrl + F 搜索 playinfo

代碼實(shí)現(xiàn)步驟: <通用>

  1. 發(fā)送請(qǐng)求, 模擬瀏覽器對(duì)于url地址發(fā)送請(qǐng)求

  2. 獲取數(shù)據(jù), 獲取網(wǎng)頁(yè)源代碼 <因?yàn)槲覀兿胍獢?shù)據(jù)內(nèi)容, 來(lái)自于網(wǎng)頁(yè)源代碼>

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

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

代碼

采集視頻

# 導(dǎo)入數(shù)據(jù)請(qǐng)求模塊
import requests
# 導(dǎo)入正則
import re
# 導(dǎo)入json
import json
# 導(dǎo)入格式化輸出模塊
import pprint
# 導(dǎo)入進(jìn)程模塊
import subprocess

"""

發(fā)送請(qǐng)求

模擬瀏覽器對(duì)于url地址發(fā)送請(qǐng)求
"""

# 確定網(wǎng)址
url = 'https://www.bilibili.com/video/BV1ua411p7iA?vd_source=b2da3931eefc454d41eb6bb5b34749d1'
# python代碼如何模擬瀏覽器? 請(qǐng)求頭 ---> 用偽裝python代碼
headers = {
    # referer 防盜鏈 告訴服務(wù)器請(qǐng)求url地址是從哪里跳過(guò)過(guò)來(lái)
    'referer': 'https://www.bilibili.com/',
    # user-agent 用戶代理 表示瀏覽器基本身份標(biāo)識(shí)
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
# 發(fā)送請(qǐng)求  ---> 得到響應(yīng)對(duì)象 200 狀態(tài)碼表示請(qǐng)求成功
response = requests.get(url=url, headers=headers)
# <Response [200]>
print(response)

獲取數(shù)據(jù)

# 獲取數(shù)據(jù) 得到響應(yīng)對(duì)象文本數(shù)據(jù) ---> 字符串?dāng)?shù)據(jù)類型
# print(response.text)

"""

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

提取我們想要數(shù)據(jù)內(nèi)容
正則表達(dá)式 re ---> 對(duì)于字符串?dāng)?shù)據(jù)進(jìn)行提取
---> 0 1 2 開(kāi)始計(jì)數(shù) -3 -2 -1<---
lis = ['a', 'b', 'c'] lis[0] lis[-3]

re.findall() --> 匹配數(shù)據(jù)返回 列表數(shù)據(jù)類型 列表取值: 根據(jù)索引位置提取內(nèi)容
re 模塊名
.findall() 調(diào)用re模塊里面findall()方法 --> 找到所有 <我們想要數(shù)據(jù)>
從什么地方去找什么數(shù)據(jù)
從 response.text 里面 去找 "title":"(.?)","pubdate" 其中 (.?) 這段是我們想要的
"""

源碼边臼、解答哄尔、教程可加Q裙:832157862
# 獲取標(biāo)題
title = re.findall('"title":"(.*?)","pubdate"', response.text)[0].replace(' ', '')
# 正則替換特殊字符
title = re.sub(r'[\/:*?"<>|]', '', title)
# 獲取shipin數(shù)據(jù)信息
html_data = re.findall('<script>window.__playinfo__=(.*?)</script>', response.text)[0]
# 轉(zhuǎn)成json字典數(shù)據(jù)類型
json_data = json.loads(html_data)
# 字典取值 --> 鍵值對(duì)取值, 根據(jù)冒號(hào)左邊內(nèi)容[鍵]  提取冒號(hào)右邊的內(nèi)容[值]
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ù)

--> 403 Forbidden 沒(méi)有訪問(wèn)權(quán)限 --> 防盜鏈 加headers請(qǐng)求頭

# 發(fā)送請(qǐng)求 獲取音頻二進(jìn)制數(shù)據(jù)
audio_content = requests.get(url=audio_url, headers=headers).content
# 發(fā)送請(qǐng)求 獲取視頻二進(jìn)制數(shù)據(jù)
# video__content = requests.get(url=video_url, headers=headers).content
# with open('video\\' + title + '.mp3', mode='wb') as a:
#     a.write(audio_content)
# with open('video\\' + title + '.mp4', mode='wb') as v:  # 丨
#     v.write(video__content)

# 通過(guò)ffmpeg 這個(gè)軟件命令 進(jìn)行視頻合成
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)

采集評(píng)論

源碼、解答柠并、教程可加Q裙:832157862
# 導(dǎo)入數(shù)據(jù)請(qǐng)求模塊
import time

import requests

for page in range(1, 11):
    # 請(qǐng)求網(wǎng)址
    time.sleep(1)
    url = f'https://api.bilibili.com/x/v2/reply/main?csrf=9b972b9803693b4f5c0d6a042b2d0c0e&mode=3&next={page}&oid=215631694&plat=1&type=1'
    # 請(qǐng)求頭
    headers = {
        # 'origin': 'https://www.bilibili.com',
        'referer': 'https://www.bilibili.com/video/',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36',
    }
    # 發(fā)送請(qǐng)求
    response = requests.get(url=url, headers=headers)
    # 獲取數(shù)據(jù)
    content_list = [i['content']['message'] for i in response.json()['data']['replies']]
    print(content_list)
    # for 遍歷輸出內(nèi)容
    for content in content_list:
        with open('評(píng)論.txt', mode='a', encoding='utf-8') as f:
            f.write(content)
            f.write('\n')
        print(content)

制作詞云

# 導(dǎo)入結(jié)巴分詞模塊
import jieba
# 導(dǎo)入詞云模塊
import wordcloud
# 讀取文件內(nèi)容
f = open('評(píng)論.txt', encoding='utf-8')
txt = f.read()
print(txt)
string = ' '.join(jieba.lcut(txt))
print(string)
wc = wordcloud.WordCloud(
    width=700,   # 寬
    height=700,  # 高
    background_color='white',  # 背景顏色
    font_path='msyh.ttc',  # 設(shè)置字體
    scale=15,  # 規(guī)模
)
wc.generate(string)
wc.to_file('評(píng)論詞云.png')

尾語(yǔ)

好了岭接,我的這篇文章寫到這里就結(jié)束啦!

有更多建議或問(wèn)題可以評(píng)論區(qū)或私信我哦臼予!一起加油努力叭(? ?_?)?

喜歡就關(guān)注一下博主鸣戴,或點(diǎn)贊收藏評(píng)論一下我的文章叭!U呈啊窄锅!

[圖片上傳失敗...(image-c27b8f-1657699277011)]

?著作權(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)離奇詭異氯檐,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)体捏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門冠摄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人几缭,你說(shuō)我怎么就攤上這事河泳。” “怎么了年栓?”我有些...
    開(kāi)封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵拆挥,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我某抓,道長(zhǎng)纸兔,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任否副,我火速辦了婚禮汉矿,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘备禀。我一直安慰自己洲拇,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布曲尸。 她就那樣靜靜地躺著赋续,像睡著了一般。 火紅的嫁衣襯著肌膚如雪另患。 梳的紋絲不亂的頭發(fā)上蚕捉,一...
    開(kāi)封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音柴淘,去河邊找鬼。 笑死秘通,一個(gè)胖子當(dāng)著我的面吹牛为严,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肺稀,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼第股,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了话原?” 一聲冷哼從身側(cè)響起夕吻,我...
    開(kāi)封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤诲锹,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(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
  • 文/蒙蒙 一朵耕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧淋叶,春花似錦阎曹、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至斟湃,卻和暖如春熏迹,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凝赛。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工注暗, 沒(méi)想到剛下飛機(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)容