Pythonは英雄連盟MSIに登り、弾幕を生放送し、詞雲図を生成します。
一、環境準備
関連第三者ライブラリの設置
pip install jieba
pip install wodcloud
二、データ準備
はい、対象:2021年5月23日、RNG優勝生放送間の弾幕情報
対象のパスを取り込む:
方法1、開発者ツール(F 12)に従って、要求url、要求ヘッダ、クッキーなどの情報を取得する。
方式2:生放送の住所urlによって、前+文字i
私たちがここで実証したのは、方式を採用することです。
三、コードは以下の通りです
ここで、Pythonが英雄連盟MSIに登り、弾幕を生中継し、詞雲図を生成する文章について紹介します。これに関連して、Pythonは弾幕を取って、詞雲図の内容を生成します。以前の文章を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。
関連第三者ライブラリの設置
pip install jieba
pip install wodcloud
二、データ準備
はい、対象:2021年5月23日、RNG優勝生放送間の弾幕情報
対象のパスを取り込む:
方法1、開発者ツール(F 12)に従って、要求url、要求ヘッダ、クッキーなどの情報を取得する。
方式2:生放送の住所urlによって、前+文字i
私たちがここで実証したのは、方式を採用することです。
三、コードは以下の通りです
import requests, re
import jieba, wordcloud
"""
#
def get_f12_barrage(url, headers, file_path):
# f12 , ,
#:param url: ( , )
#:param headers:
#:param file_path:
#:return:
# 1、 ,
response = requests.get(url=url, headers=headers)
# 2、
# ,
# apparent_encoding :
response.encoding = response.apparent_encoding
# 3、
content = response.text
content_list = re.findall(":(.*?)@", content)
# 4、 , ”w+ “, , ,
with open(file_path, mode="w+", encoding="utf-8") as fp:
for line in content_list:
# , ,
fp.write(line[1:] + "
")
return file_path
"""
# ******************8******************** ******************************************
# : , ,
def get_barrage(url, headers, file_path):
"""
+i ,
:param url: ( +i)
:param headers:
:param file_path:
:return:
"""
# 1、 ,
response = requests.get(url=url, headers=headers)
# 2、
# ,
# apparent_encoding :
response.encoding = response.apparent_encoding
# 3、
# response.text
content = response.text
# , (.*?)
content_list = re.findall("<d p=\".*?\">(.*?)</d>", content)
# 4、 , ”w+ “, , ,
with open(file_path, mode="w+", encoding="utf-8") as fp:
for line in content_list:
fp.write(line + "
")
return file_path
# https://api.bilibili.com/x/v1/dm/list.so?oid=343174354
# https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=343174354&date=2021-05-23
def make_word_cloud(word_file_path):
# 1、 , gbk , utf-8
with open(word_file_path, encoding="utf-8") as fp:
content = fp.read() # read
# 2、 , ,
content_list = jieba.lcut(content)
# ,
content_str = " ".join(content_list)
# 3、
wc_config = wordcloud.WordCloud(
width=700, #
height=500, #
background_color='black', #
font_path='msyh.ttc', # C:\Windows\Fonts\ , ( 3 ), 【 - 】
scale=15, #
stopwords={' ', ' '}, #
contour_width=5, #
contour_color='red' #
)
# 4、 , ,
wc_config.generate(content_str)
wc_config.to_file("e:\\reg_cloud.png")
return word_file_path
if __name__ == "__main__":
"""
# url
f12_url = 'https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=343174354&date=2021-05-23'
# , , cookie、user-agent
header = {
'cookie': 'bsource=search_baidu; _uuid=BBD44BE2-5DAA-A13A-A593-FD3A83C3929423721infoc; buvid3=18335C4D-A3A0-48D5-973A-7943D63AC73E34756infoc; CURRENT_FNVAL=80; blackside_state=1; rpdid=|(um|u)klum~0J\'uYkkJJkJJu; fingerprint=be684c13c90e4279aaaa3e2694da4285; buvid_fp=18335C4D-A3A0-48D5-973A-7943D63AC73E34756infoc; buvid_fp_plain=96D5E0EF-41D9-4A32-BE47-DFF96C44DB9F155821infoc; SESSDATA=f90082f7%2C1637884658%2C008f9%2A51; bili_jct=2f17a04a5651fb1c6579b73aeb640f7f; DedeUserID=1153205015; DedeUserID__ckMd5=b6f334f0a2d86238; sid=6vb9j9nl; bfe_id=6f285c892d9d3c1f8f020adad8bed553',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
}
#
f12_file_path = "e:\\RNG.txt"
"""
# , +i
url = 'https://api.bilibili.com/x/v1/dm/list.so?oid=343174354'
file_path = "e:\\RNG_1.txt"
# cookie user-agent, f12 ,
# , cookIe
header = {
'cookie': '********',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
}
#
get_barrage(url=url, headers=header, file_path=file_path)
word_file_path = get_barrage(url=url, headers=header, file_path=file_path)
make_word_cloud(word_file_path)
四、詞雲図の効果展示ここで、Pythonが英雄連盟MSIに登り、弾幕を生中継し、詞雲図を生成する文章について紹介します。これに関連して、Pythonは弾幕を取って、詞雲図の内容を生成します。以前の文章を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。