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