项目场景:
在现代社会,微博作为一种重要的社交媒体平台,承载着大量用户的评论和观点。获取某条微博下的评论信息,在市场调查、舆情监测以及数据分析等领域具有重要价值。然而,手动复制微博评论不仅费时费力,更不容易进行系统化的数据处理。借助Python编写的爬虫程序,可以高效地自动获取这些评论数据,从而提升工作效率。
数据采集
获取ID号
自动提取微博评论:通过微博的微博ID快速抓取指定微博下的所有评论,
无需手动操作。
获取cookes
运行代码后的结果
部分代码展示
分页支持:可设置爬取的页数,获取更多评论信息,便于后续分析和处理。
for weibo_id in v_weibo_ids:
# 初始化max_id
max_id = '0'
max_id_type = '0'
# 爬取前n页,可任意修改
for page in range(1, v_max_page + 1):
wait_seconds = random.uniform(0, 1) # 等待时长秒
sleep(wait_seconds) # 随机等待
print('开始爬取第{}页'.format(page))
if page == 1: # 第一页,没有max_id参数
url = 'https://m.weibo.cn/comments/hotflow?id={}&mid={}&max_id_type=0'.format(weibo_id, weibo_id)
else: # 非第一页,需要max_id参数
if str(max_id) == '0': # 如果发现max_id为0,说明没有下一页了,break结束循环
print('max_id is 0, break now')
break
url = 'https://m.weibo.cn/comments/hotflow?id={}&mid={}&max_id_type={}&max_id={}'.format(weibo_id,
weibo_id,
max_id_type,
max_id)
print(url)
4.快速获取分析数据:包括评论内容、评论时间、点赞数等,全面了解用户对
特定微博的反馈。
绘制词云的结果
词云图部分代码
from wordcloud import WordCloud
import numpy as np
from PIL import Image
import matplotlib.pyplot as plt
import seaborn as sns
# 假设您已经创建了 word_counts 变量用于词频统计
# 加载背景图片
background = np.array(Image.open('./data/mask1.jpg'))
# 创建词云对象
wc = WordCloud(
background_color='white',
mode='RGB',
mask=background,
max_words=300,
font_path='./data/msyh.ttc', # 请注意在路径中使用双斜杠或原始字符串表示
max_font_size=150,
relative_scaling=0.6,
random_state=50,
scale=2,
colormap=sns.color_palette("husl", 10, as_cmap=True)
).generate_from_frequencies(word_counts) # 使用 generate_from_frequencies 方法传入词频统计结果
# 绘制词云图
f, ax = plt.subplots(figsize=(12, 8))
plt.imshow(wc, interpolation="bilinear") # 显示词云
plt.axis('off') # 关闭 x,y 轴
plt.show() # 显示词云图
wc.to_file('词云图.jpg') # 保存词云图
情感分析结果
情感分析部分代码
import matplotlib.pyplot as plt
# 数据
labels = ['积极', '中性', '消极']
sizes = [proportion_a, proportion_b, proportion_c]
colors = ['lightgreen', 'lightblue', 'lightcoral']
# 创建环形图
plt.figure(figsize=(8, 8))
plt.pie(sizes, labels=labels, colors=colors, autopct='%1.1f%%', startangle=140)
plt.title('情感分类环形图')
# 画一个圆形,制作成环形图
centre_circle = plt.Circle((0, 0), 0.60, fc='white')
fig = plt.gcf()
fig.gca().add_artist(centre_circle)
# 显示图例、比例和标题
plt.axis('equal')
# 保存高清图片
plt.savefig('情感分类环形图.png', dpi=300) # 保存为高清图片
# 显示图表
plt.show()
获取完整源码
通过以上功能,该项目使得爬取微博评论的过程变得高效和简单,是对数据获
取与分析的一种有效工具。