在英雄聯盟S11總決賽中,中國LPL賽區戰隊EDG以3∶2戰勝韓國LCK賽區戰隊DK,獲得2021年英雄聯盟全球總決賽冠軍。
整個比賽過程深受全網關注:
- 微博熱搜第一名,顯示有8194萬觀看;
- bilibili平臺,吸引3.5億人氣,滿屏彈幕;
- 騰訊影片600萬人看過;
- 鬥魚和虎牙平臺的熱度也是居高不下;
- 賽後,央視新聞也發微博祝賀EDG戰隊奪冠;
既然比賽熱度這麼高,那大家都說了點啥?
我們用Python分析了31000條彈幕資料,滿屏都是粉絲的祝福與感受。
我們先來分析網頁,找到彈幕資料所在地方。
點選F12,先開啟開發者工具,按照圖中提示,完成1-5處的操作。
拼接url,得到最終的url。
url = 'https://api.bilibili.com/x/player/pagelist?bvid=BV1EP4y1j7kV&jsonp=jsonp'
res = requests.get(url).text
json_dict = json.loads(res)
#pprint(json_dict)
for i in json_dict["data"]:
oid = i["cid"]
api = "https://api.bilibili.com/x/v1/dm/list.so?oid="
url = api + str(oid)
print(url)
一共有7個網址,分別對應7個影片裡面的彈幕資料。隨便點開一個檢視:
有了完整的url後,我們要做的就是提取裡面的資料,這裡還是直接採用正則表示式,並最終寫入txt文件。
final_url = "https://api.bilibili.com/x/v1/dm/list.so?oid=437729555"
final_res = requests.get(final_url)
final_res.encoding = chardet.detect(final_res.content)['encoding']
final_res = final_res.text
pattern = re.compile('<d.*?>(.*?)</d>')
data = pattern.findall(final_res)
with open("彈幕.txt", mode="w", encoding="utf-8") as f:
for i in data:
f.write(i)
f.write("\n")
結果如下: