【爬虫+数据清洗+可视化分析】python文本挖掘“狂飙“的哔哩哔哩评论
import requests
import json
import pandas as pd
from tqdm import tqdm
# 爬取哔哩哔哩评论的函数
def crawl_danmaku(video_id, page_num):
danmaku_list = []
for i in range(1, page_num+1):
url = f'https://api.bilibili.com/x/v2/dm/list.so?oid={video_id}&type=1&pn={i}&ps=20'
response = requests.get(url)
if response.status_code == 200:
danmaku_data = json.loads(response.text)
for item in danmaku_data['data']['danmakus']:
text = item['text']
time = item['progress']
danmaku_list.append([text, time])
return danmaku_list
# 数据清洗和分析的函数
def analyze_danmaku(danmaku_list):
df = pd.DataFrame(danmaku_list, columns=['Comment', 'Time'])
# 将评论时间转换为分钟
df['Minute'] = df['Time'] // 1000 // 60
# 统计每分钟内发言的频率
minute_count = df.groupby('Minute')['Comment'].count().sort_values(ascending=False)
# 找出频率超过阈值的分钟,并可视化
threshold = 100 # 设定频率阈值
high_frequency_minutes = minute_count[minute_count > threshold].index
minute_count[minute_count > threshold].plot(title='Comment Frequency over Time')
# 视频ID,页数
video_id = '请在此处输入视频ID'
page_num = 5 # 假设我们只爬取前5页的评论
danmaku_list = crawl_danmaku(video_id, page_num)
analyze_danmaku(danmaku_list)
这段代码提供了一个简化的示例,展示了如何使用Python进行简单的哔哩哔哩评论文本挖掘。首先,我们定义了一个爬取评论的函数,然后定义了一个分析和清洗数据的函数。在实际应用中,你需要替换掉示例中的video\_id,并根据需要调整page\_num来获取更多的评论数据。
评论已关闭