Python 教程—爬取直播間彈幕

說到彈幕數據,一般聯想到的就是詞彙分析,詞雲圖,除了我們平時見到的指標數據,語言文字數據其實也常常伴隨在我們身邊,例如:大數據殺熟。

分析直播間彈幕數據對於在線教育或者電商行業來說,如果能利用好確實能給自己的業務部門帶來很大的幫助,可以通過這些數據去分析直播間的講課質量、學員的心理動向、不同羣體的特徵等。

當然了,爬取股票實時數據也是這個代碼。

爬蟲準備:

idel / 其他 python 工具

如果是電腦安裝了多個 python 工具,比如安裝 spyder 後,由於 spyder 自帶了很多庫,因此在使用 idel 時,例如調用 requests 失敗,通過 cmd 安裝也提示已安裝,那麼這時可以通過下列代碼,直接調用 spyder 安裝的庫

1import sys
2sys.path.append(r'D:\ProgramData\Anaconda3\Lib\site-packages')
3#site-packages路徑自行更改
4

需要的庫:

asyncio、logging、requests、AioWebSocket(一般動態數據網頁採用的是 WebSocket 協議)、datetime(可有可無,主要是爲了看時間)

與 HTTP 請求不同的是,WebSocket 連接地址以 ws 或 wss 開頭,我們首先打開一個在線教育平臺的 直播間

打開審查元素,Network->WS->Name 中會產生幾個文件,如果網絡不好的話可能會產生多個文件,可以找到哪個文件的 Messages 中會產生直播間中的彈幕信息,例如下面第一個文件

wss 地址則是該文件 Hearders 下的 URL

請求命令可以從另一個文件中找到,例如第二個文件,Messages 中不會產生彈幕數據,但是會產生髮送的請求,綠色箭頭表示的就是發送的請求,紅色箭頭就是接收的信息

wss 地址和發送的請求代碼記下來,通過下面程序可以爬取直播實時彈幕信息

 1import sys
 2sys.path.append(r'D:\ProgramData\Anaconda3\Lib\site-packages')
 3import asyncio
 4import logging
 5import requests
 6from datetime import datetime
 7from aiowebsocket.converses import AioWebSocket
 8async def startup(uri):
 9    async with AioWebSocket(uri) as aws:
10        converse = aws.manipulator
11        await converse.send("發送的請求")
12        # 例await converse.send('3:::{"SID":1,"CID":2,"SER":0}')
13        # send 表示客戶端向服務端發送的消息
14        while True:
15            mes = await converse.receive()
16            # recive 表示服務端向客戶端推送的消息
17            mes = mes.decode()
18            print('{time}-Client receive:{rec}'.format(time=datetime.now().strftime('%Y-%m-%d %H:%M:%S'), rec=mes))
19if __name__ == '__main__':
20    remote = 'wss地址'  #wss地址填在這裏
21    try:
22        asyncio.get_event_loop().run_until_complete(startup(remote))
23    except KeyboardInterrupt as exec:
24        logging.info('Quit.')
25

抓取的彈幕信息,其中也包括用戶 id 和其他參數

後期對爬取到的信息進行字符串提取,可以整理得到監控時間段內的彈幕信息以及發言人名稱

根據上面彈幕可以繪製詞雲圖 (後面整理)

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/FkC5yKEfJj8Xp1eYnEdYDw