国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

畢業(yè)設(shè)計 大數(shù)據(jù)B站數(shù)據(jù)分析與可視化系統(tǒng)

2023-03-08 10:45 作者:丹成學(xué)長  | 我要投稿

0 前言

?? 這兩年開始畢業(yè)設(shè)計和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點,往往達不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長自己做的項目系統(tǒng)達不到老師的要求。

為了大家能夠順利以及最少的精力通過畢設(shè),學(xué)長分享優(yōu)質(zhì)畢業(yè)設(shè)計項目,今天要分享的是

?? ?大數(shù)據(jù)B站數(shù)據(jù)分析與可視化

??學(xué)長這里給一個題目綜合評分(每項滿分5分)

  • 難度系數(shù):3分

  • 工作量:3分

  • 創(chuàng)新點:4分

畢設(shè)幫助,選題指導(dǎo),技術(shù)解答,歡迎打擾,見B站個人主頁

https://space.bilibili.com/33886978


1 課題背景

目前視頻行業(yè)可以分為愛優(yōu)騰為代表的長視頻賽道,快手抖音為代表的短視頻賽道,以及B站,B站的視頻內(nèi)容十分的豐富,因為獨特的社區(qū)屬性和基于UP主們的原創(chuàng)內(nèi)容,打造了一個通過內(nèi)容交流給用戶帶來愉悅感的社區(qū)型平臺。

本項目基于Python+flask+pyecharts實現(xiàn)了對嗶哩嗶哩排行榜大數(shù)據(jù)的可視化分析。

2 實現(xiàn)效果

在這里插入圖片描述

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

本次數(shù)據(jù)來源于嗶哩嗶哩排行榜,服務(wù)器后臺中每5min對排行榜數(shù)據(jù)爬取,通過jQuery Ajax+flask實時更新到網(wǎng)頁上。

python爬蟲簡介

網(wǎng)絡(luò)爬蟲是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。爬蟲對某一站點訪問,如果可以訪問就下載其中的網(wǎng)頁內(nèi)容,并且通過爬蟲解析模塊解析得到的網(wǎng)頁鏈接,把這些鏈接作為之后的抓取目標,并且在整個過程中完全不依賴用戶,自動運行。若不能訪問則根據(jù)爬蟲預(yù)先設(shè)定的策略進行下一個 URL的訪問。在整個過程中爬蟲會自動進行異步處理數(shù)據(jù)請求,返回網(wǎng)頁的抓取數(shù)據(jù)。在整個的爬蟲運行之前,用戶都可以自定義的添加代理,偽 裝 請求頭以便更好地獲取網(wǎng)頁數(shù)據(jù)。爬蟲流程圖如下:

在這里插入圖片描述

爬蟲相關(guān)代碼

import requests ?
from bs4 import BeautifulSoup ?
import xlwt ?
import time ?
import urllib3 ?
import requests ?
import json ?
# 爬取B站熱榜排行 ?
# 格式解析,[0-當(dāng)前排名,1-視頻標題,2-播放數(shù)目,3-彈幕數(shù)量,4-綜合得分,5-作者,6-視頻地址,7-時長,8-評論數(shù),9-收藏數(shù),10-投幣數(shù),11-分享數(shù),12-點贊數(shù)] ?
# 格式化 ?
def whitespace(st): ?
? ?st = st.replace('\n', '') ?
? ?st = st.strip() ?
? ?st = st.replace(' ', '') ?
? ?return st ?
# 詳情頁 ?
def info_Page(bv): ?
? ?url = 'http://api.bilibili.com/x/web-interface/view?bvid=' + bv ?
? ?headers = { ?
? ? ? ?"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" ?
? ?} ?# 請求頭,模擬瀏覽器的運行 ?
? ?urllib3.disable_warnings() ?# 從urllib3中消除警告 ?
? ?response = requests.get(url, headers=headers) ?
? ?content = json.loads(response.text) ?
? ?# 很迷,獲取到的是str字符串 需要解析成json數(shù)據(jù) ?
? ?statue_code = content.get('code')# print(statue_code) ?
? ?if statue_code == 0: ?
? ? ? ?duration = content['data']['duration'] # 時長 ?
? ? ? ?reply = content['data']['stat']['reply'] # 評論 ?
? ? ? ?favorite = content['data']['stat']['favorite'] # 收藏 ?
? ? ? ?coin = content['data']['stat']['coin'] # 投幣 ?
? ? ? ?share = content['data']['stat']['share'] # 分享 ?
? ? ? ?like = content['data']['stat']['like'] # 點贊 ?
? ?return duration,reply,favorite,coin,share,like ?
while(True): ?
? ?url = 'https://www.bilibili.com/v/popular/rank/all'; ?
? ?headers = { ?
? ? ? ?'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'} ?
? ?rank = requests.get(url, headers=headers) ?# 請求頁面 ?
? ?soup = BeautifulSoup(rank.text, 'lxml') ?
? ?all_rank = soup.find_all('li', class_='rank-item') ?
? ?num = 0 ?
? ?lst=[] ?
? ?for i in all_rank: ?
? ? ? ?record = [] ?
? ? ? ?rank_num = i.find('div', class_='num').text ?# 獲取排名 ?
? ? ? ?info = i.find('div', class_='info') ?# 篩選出視頻詳細信息的標簽 ?
? ? ? ?href = info.find('a', class_='title').attrs['href'] ?# 獲取鏈接 ?
? ? ? ?title = info.find('a', class_='title').text ?# 獲取標題 ?
? ? ? ?play_num = info.find('i', class_='b-icon play').parent.text ?# 獲取播放量 ?
? ? ? ?view_num = info.find('i', class_='b-icon view').parent.text ?# 獲取彈幕數(shù) ?
? ? ? ?author = info.find('i', class_='b-icon author').parent.text ?# 獲取作者名 ?
? ? ? ?scores = info.find('div', class_='pts').find('div').text ?# 獲取綜合得分 ?
? ? ? ?# 播放,彈幕,作者 ?
? ? ? ?play_num = whitespace(play_num) ?
? ? ? ?view_num = whitespace(view_num) ?
? ? ? ?author = whitespace(author) ?
? ? ? ?bv = href.split('/')[-1] ?
? ? ? ?duration,reply,favorite, coin,share,like = info_Page(bv) ?
? ? ? ?record.append(rank_num) ?
? ? ? ?record.append(title) ?
? ? ? ?record.append(play_num) ?
? ? ? ?record.append(view_num) ?
? ? ? ?record.append(scores) ?
? ? ? ?record.append(author) ?
? ? ? ?record.append(href) ?
? ? ? ?record.append(duration) ?
? ? ? ?record.append(reply) ?
? ? ? ?record.append(favorite) ?
? ? ? ?record.append(coin) ?
? ? ? ?record.append(share) ?
? ? ? ?record.append(like) ?
? ? ? ?num += 1 ?
? ? ? ?lst.append(record) ?
? ?# 爬取的數(shù)據(jù)存入文件,避免多次爬取且提高響應(yīng)速度 ?
? ?with open('./bilibili.txt', 'w',encoding='utf-8') as f: ?
? ? ? ?for line in lst: ?
? ? ? ? ? ?for i in line: ?
? ? ? ? ? ? ? ?f.write(str(i)+',') ?
? ? ? ? ? ?f.write('\n') ?
? ?time.sleep(300) ?
#print(lst[0]) ?

4 數(shù)據(jù)可視化

可視化呈現(xiàn)方案

綜合得分計算指標:嗶哩嗶哩綜合得分,是視頻是否能排上排行榜的依據(jù),若能知道其規(guī)則,對于視頻內(nèi)容的傾向,up主是否需要請求“一鍵三連”,觀眾們需不需要吝嗇手中的幣,是有很大的價值的,所以在此首先進行綜合得分計算指標的分析及其可視化,此處采取灰色關(guān)聯(lián)度分析(Grey Relation Analysis,GRA)來進行數(shù)據(jù)的處理。

首先是要確定子母序列,母是結(jié)果,子是影響因子,那么,毫無疑問,綜合得分就是母,其他均為影響因子。將其分別存入mom以及son中,代碼如下:

with open('./bilibili.txt', 'r+',encoding='utf-8') as f1: ?
? ?lst2=[] ?
? ?for line in f1.readlines(): ?
? ? ? ?lst2.append(line.split(',')) ?
mom_ = [int(i[4]) for i in lst2[0:50:]] ?
view = [] ?
reply = [] ?
favorite = [] ?
coin = [] ?
share = [] ?
like = [] ?
for i in lst2[0:50]: ?
? ?view.append(float(i[2].strip("萬"))*10000) ?
? ?reply.append(int(i[8])) ?
? ?favorite.append(int(i[9])) ?
? ?coin.append(int(i[10])) ?
? ?share.append(int(i[11])) ?
? ?like.append(int(i[12])) ?
son_ = [view,reply,favorite,coin,share,like]

然后要對數(shù)據(jù)進行預(yù)處理,因為我們的這些要素是不同質(zhì)的東西的指標,因此可能會有的數(shù)字很大有的數(shù)字很小,但是這并不是由于它們內(nèi)稟的性質(zhì)決定的,而只是由于量綱不同導(dǎo)致的,因此我們需要對它們進行無量綱化。這個操作一般在數(shù)據(jù)處理領(lǐng)域叫做歸一化(normalization),也就是減少數(shù)據(jù)的絕對數(shù)值的差異,將它們統(tǒng)一到近似的范圍內(nèi),然后重點關(guān)注其變化和趨勢。按公式歸一化即可。

mom_ = np.array(mom_) ?
son_ = np.array(son_) ?
son_ = son_.T / son_.mean(axis=1) ?
mom_ = mom_/mom_.mean() ?
for i in range(son_.shape[1]): ?
? ?son_[:,i] = abs(son_[:,i]-mom_.T) ?
Mmin = son_.min() ?
Mmax = son_.max() ?
cors = (Mmin + 0.5*Mmax)/(son_+0.5*Mmax) ?
Mmean = cors.mean(axis = 0) ?

最終結(jié)果:B站綜合得分與播放、評論、收藏、投幣、分享、點贊幾個因素都具有很強的相關(guān)性。

灰色關(guān)聯(lián)度介紹

GRA是一種多因素統(tǒng)計分析的方法。簡單來講,就是在一個灰色系統(tǒng)中,我們想要了解其中某個我們所關(guān)注的某個項目受其他的因素影響的相對強弱,本項目中,就是說:我們假設(shè)B站綜合得分可能是與播放、評論、收藏、投幣、分享、點贊幾個因素相關(guān)的,那么我們想知道綜合得分與這幾個因素中的哪個相對來說更有關(guān)系,而哪個因素相對關(guān)系弱一點,把這些因素排個序,得到一個分析結(jié)果,我們就可以知道嗶哩嗶哩綜合得分,與因素中的哪些更相關(guān),因而也就可以看出觀眾的一鍵三連的作用以及up主們更應(yīng)該求的是贊、幣亦或是其他。


相關(guān)代碼

# 灰色關(guān)聯(lián)度分析版本 ?
import numpy as np ?
from pyecharts import options as opts ?
from pyecharts.charts import Graph ?
with open('./bilibili.txt', 'r+',encoding='utf-8') as f1: ?
? ?lst2=[] ?
? ?for line in f1.readlines(): ?
? ? ? ?lst2.append(line.split(',')) ?
mom_ = [int(i[4]) for i in lst2[0:50:]] ?
view = [] ?
reply = [] ?
favorite = [] ?
coin = [] ?
share = [] ?
like = [] ?
for i in lst2[0:50]: ?
? ?view.append(float(i[2].strip("萬"))*10000) ?
? ?reply.append(int(i[8])) ?
? ?favorite.append(int(i[9])) ?
? ?coin.append(int(i[10])) ?
? ?share.append(int(i[11])) ?
? ?like.append(int(i[12])) ?
son_ = [view,reply,favorite,coin,share,like] ?
mom_ = np.array(mom_) ?
son_ = np.array(son_) ?
son_ = son_.T / son_.mean(axis=1) ?
mom_ = mom_/mom_.mean() ?
for i in range(son_.shape[1]): ?
? ?son_[:,i] = abs(son_[:,i]-mom_.T) ?
Mmin = son_.min() ?
Mmax = son_.max() ?
cors = (Mmin + 0.5*Mmax)/(son_+0.5*Mmax) ?
Mmean = cors.mean(axis = 0) ?
# 為便于觀察 擴大40倍 ?
nodes = [ ?
? ?{"name": "播放", "symbolSize": Mmean[0]*40}, ?
? ?{"name": "評論", "symbolSize": Mmean[1]*40}, ?
? ?{"name": "收藏", "symbolSize": Mmean[2]*40}, ?
? ?{"name": "投幣", "symbolSize": Mmean[3]*40}, ?
? ?{"name": "分享", "symbolSize": Mmean[4]*40}, ?
? ?{"name": "點贊", "symbolSize": Mmean[5]*40}, ?
] ?
links = [] ?
for i in nodes: ?
? ?for j in nodes: ?
? ? ? ?links.append({"source": i.get("name"), "target": j.get("name")}) ?
c = ( ?
? ?Graph() ?
? ?.add("", nodes, links, repulsion=8000) ?
? ?.set_global_opts(title_opts=opts.TitleOpts(title="綜合得分計算指標")) ?
) ?
c.render_notebook() ?

5 最后

畢設(shè)幫助,選題指導(dǎo),技術(shù)解答,歡迎打擾,見B站個人主頁

https://space.bilibili.com/33886978

畢業(yè)設(shè)計 大數(shù)據(jù)B站數(shù)據(jù)分析與可視化系統(tǒng)的評論 (共 條)

分享到微博請遵守國家法律
黑龙江省| 登封市| 固原市| 育儿| 吉林市| 奈曼旗| 鸡东县| 乐清市| 桓台县| 调兵山市| 沁源县| 吉林市| 大悟县| 商丘市| 临朐县| 光泽县| 门源| 永德县| 华池县| 揭阳市| 高安市| 广灵县| 石屏县| 禹州市| 隆德县| 安新县| 綦江县| 宝清县| 普兰县| 绵竹市| 海城市| 江油市| 洛浦县| 烟台市| 和政县| 平湖市| 合肥市| 弥勒县| 腾冲县| 三河市| 瑞金市|