【Python3爬蟲】我爬取了七萬條彈幕谱仪,看看RNG和SKT打得怎么樣

一、寫在前面

  直播行業(yè)已經(jīng)火熱幾年了否彩,幾個大平臺也有了各自獨特的“彈幕文化”疯攒,不過現(xiàn)在很多平臺直播比賽時的彈幕都基本沒法看的,主要是因為網(wǎng)絡上的噴子還是挺多的列荔,尤其是在觀看比賽的時候敬尺,很多彈幕不是噴選手就是噴戰(zhàn)隊,如果看了這種彈幕贴浙,真是讓比賽減分不少砂吞。

  但和別的平臺比起來,B 站的彈幕會好一些崎溃。正好現(xiàn)在是英雄聯(lián)盟的世界總決賽時間蜻直,也有不少人選擇在 B 站看比賽直播,那么大家在看直播的時候會發(fā)什么彈幕呢袁串?話不多說概而,這就用 Python 寫個爬蟲來爬取 B 站直播時的彈幕吧!


二囱修、爬取分析

首先打開?Bilibili赎瑰,然后找到英雄聯(lián)盟比賽的直播間:

我得到的直播間的鏈接為:https://live.bilibili.com/6?broadcast_type=0&visit_id=8abcmywu95s0#/,這個鏈接中的 broadcast_type 和 visit_id 是隨機生成的破镰,不過對我們的爬取也沒影響餐曼,只要找到直播間的鏈接就好了压储。

  打開開發(fā)者工具,切換到 NetWork源譬,點選上 XHR集惋,在其中能找到一個請求:https://api.live.bilibili.com/ajax/msg。這個請求需要四個參數(shù)(roomid踩娘,csrf_token芋膘,csrf,visit_id)霸饲,其中 roomid 為直播間的 id,csrf_token 和 csrf 可以從瀏覽器上 copy臂拓,visit_id 為空厚脉。該請求返回的結果中包含十條彈幕信息,包括彈幕內(nèi)容胶惰、彈幕發(fā)送人昵稱等等傻工。所以要獲得更多彈幕內(nèi)容,我們只需要一直發(fā)送這個請求就 OK 了孵滞!


三中捆、爬取實現(xiàn)

  通過前面的分析可以發(fā)現(xiàn)要爬取 B 站直播彈幕還是很輕松的,但是要得到大量彈幕可能就需要考慮使用多線程了坊饶。對于爬取到的彈幕泄伪,還要及時地保存下來,這里我選擇使用 MongoDB 數(shù)據(jù)庫來保存彈幕信息匿级。在爬取直播彈幕的時候蟋滴,我開了四個線程來爬取,開了兩個線程來解析和保存數(shù)據(jù)痘绎,線程之間使用隊列來處理數(shù)據(jù)津函。

  這里建了兩個類 CrawlThread 和 ParseThread,CrawThread 是用于爬取彈幕的線程孤页,ParseThread 是用于解析和保存彈幕的線程尔苦,兩個類都繼承了 threading.Thread,并重寫了 run() 方法行施。下面是爬取彈幕的代碼內(nèi)容:


  下面是解析和保存彈幕的代碼內(nèi)容允坚,主要是一直查詢隊列,如果隊列中有數(shù)據(jù)蛾号,就取出來進行解析和保存:


  從比賽開始到比賽結束屋讶,總共爬取到了76530條彈幕,在 Robot 3T 中截圖如下:


四须教、生成詞云

  彈幕信息已經(jīng)存好了皿渗,但是考慮到其中有很多表情等無用內(nèi)容斩芭,所以需要將這些內(nèi)容給清洗掉。清洗結束之后就能夠進行分詞操作了乐疆,這里我選擇用 jieba 庫來處理划乖,在使用 jieba 的時候,可以設置用戶詞典挤土,因為像選手 ID琴庵,英雄名稱這些內(nèi)容是會被分詞的,但設置用戶詞典之后就不會被分詞了仰美,設置方法如下:

jieba.load_userdict("userdict.txt")

  userdict.txt 中保存了選手 ID迷殿,選手外號,英雄名稱等內(nèi)容咖杂,在設置了用戶詞典后庆寺,這些內(nèi)容在分詞的時候都不會被分開了。在分詞結束之后诉字,需要將那些長度為1的部分清除掉懦尝,然后將出現(xiàn)頻次高的內(nèi)容提取出來,這里用到了 collecttions 中的 Counter壤圃,利用 Counter 可以很方便地統(tǒng)計頻次陵霉。這一部分代碼內(nèi)容如下:


?  在進行完上述操作之后,就可以使用 wordcloud 這個庫來生成詞云了伍绳,生成詞云時可以設置停止詞和字體踊挠,這一部分的代碼如下:


?  最終生成的詞云圖為:

  可以看到很多人都在討論 faker 的,李哥還是李哥啊冲杀,李哥的瑞茲也是強的不行止毕,也有不少彈幕在說天使和加里奧的問題,不得不說漠趁,小虎小明的發(fā)揮是有問題的扁凛,此外還有一些說噴子的,看來 B 站的噴子也不少啊闯传。

另外想要成為一個優(yōu)秀的谨朝、有能力程序員,做軟件開發(fā)的話甥绿,就來學習python吧字币,而且學習編程的話有一個學習的氛圍跟交流圈子特別重要!這里我推薦一個python交流扣裙共缕,--先6115洗出;后30101,不管你是大牛還是小白图谷,大家都一起成長進步翩活。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末阱洪,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子菠镇,更是在濱河造成了極大的恐慌冗荸,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件利耍,死亡現(xiàn)場離奇詭異蚌本,居然都是意外死亡,警方通過查閱死者的電腦和手機隘梨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進店門程癌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人轴猎,你說我怎么就攤上這事嵌莉。” “怎么了税稼?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長垮斯。 經(jīng)常有香客問我郎仆,道長,這世上最難降的妖魔是什么兜蠕? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任扰肌,我火速辦了婚禮,結果婚禮上熊杨,老公的妹妹穿的比我還像新娘曙旭。我一直安慰自己,他們只是感情好晶府,可當我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布桂躏。 她就那樣靜靜地躺著,像睡著了一般川陆。 火紅的嫁衣襯著肌膚如雪剂习。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天较沪,我揣著相機與錄音鳞绕,去河邊找鬼。 笑死尸曼,一個胖子當著我的面吹牛们何,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播控轿,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼冤竹,長吁一口氣:“原來是場噩夢啊……” “哼拂封!你這毒婦竟也來了?” 一聲冷哼從身側響起贴见,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤烘苹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后片部,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體镣衡,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年档悠,在試婚紗的時候發(fā)現(xiàn)自己被綠了廊鸥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡辖所,死狀恐怖惰说,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情缘回,我是刑警寧澤吆视,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站酥宴,受9級特大地震影響啦吧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拙寡,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一授滓、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧肆糕,春花似錦般堆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至始赎,卻和暖如春噩咪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背极阅。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工胃碾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人筋搏。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓仆百,卻偏偏與公主長得像,于是被迫代替她去往敵國和親奔脐。 傳聞我的和親對象是個殘疾皇子俄周,可洞房花燭夜當晚...
    茶點故事閱讀 42,722評論 2 345

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