当前位置: 首页 > news >正文

网络爬虫(二) 哔哩哔哩热榜高频词按照图片形状排列

我们有时候需要爬取结果生成为自定义的词云图

生成自定义的词云图通常需要以下步骤:

1. 爬取数据:使用爬虫工具或库,如requests、BeautifulSoup等,可以爬取网页、论坛、社交媒体等平台上的文本数据。

2. 数据预处理:对爬取到的文本数据进行清洗和处理,去除无用字符、标点符号、停用词等,并进行分词操作。

3. 构建词频字典:统计每个词的出现频率,可以使用字典或Counter类记录每个词的频率。

4. 生成词云图:使用词云生成工具,如wordcloud库,根据词频字典生成词云图。可以根据需求设置词云的样式、颜色、形状等。

需要根据具体的需求对代码进行修改和完善,如数据预处理、词频统计等。另外,还可以根据需求自定义词云的样式、颜色、字体等。

需要导入的库,先pip安装一下

# 导入扩展库
import re # 正则表达式库
import collections # 词频统计库
import numpy as np # numpy数据处理库
import jieba # 结巴分词
import wordcloud # 词云展示库
from PIL import Image # 图像处理库
import matplotlib.pyplot as plt # 图像展示库
from pylab import mpl # 用于处理中文乱码

读取保存到csv的爬取结果,根据

# 读取文件
fn = open('all_data.csv', encoding='utf-8-sig') # 打开文件并编码
string_data = fn.read() # 读出整个文件
fn.close() # 关闭文件# 文本预处理
pattern = re.compile(u'\t|\n|\.|-|:|;|\)|\(|\?|"') # 定义正则表达式匹配模式
string_data = re.sub(pattern, '', string_data) # 将符合模式的字符去除# 文本分词
seg_list_exact = jieba.cut(string_data, cut_all=False) # 精确模式分词
object_list = []
remove_words = [u'的', u',', u'和', u'是', u'随着', u'对于', u'对', u'等', u'能', u'都', u'。', u' ', u'、', u'中', u'在', u'了',u'通常', u'如果', u'我们', u'需要', u'把', u'但', u'?', u'!', u'...', u'有', u'做', u'大', u'一个', u'一些', u':',u'》', u'!', u'】', u'[', u'【', u'+', u'我', u'你', u'"', u'。。。', u'《', u'1', u'/', u'?', u'吗', u'“',u'这', u'小', u'.', u'#', u'|', u'(', u')', u'(', u')', u'…', u'”', u',', u'不', u'上'] # 自定义去除词库for word in seg_list_exact: # 循环读出每个分词if word not in remove_words: # 如果不在去除词库中object_list.append(word) # 分词追加到列表# 词频统计
word_counts = collections.Counter(object_list) # 对分词做词频统计
word_counts_top10 = word_counts.most_common(10) # 获取前10最高频的词
print(word_counts_top10) # 输出检查# 词频展示
mask = np.array(Image.open('tree.jpg')) # 定义词频背景
wc = wordcloud.WordCloud(font_path='D:/Course/bilibiliHot/JiZiHeFengChiSong.ttf', # 设置字体格式mask=mask, # 设置背景图max_words=200, # 最多显示词数max_font_size=100, # 字体最大值background_color='white'# 设置背景颜色,默认为黑色black
)fig = plt.figure(figsize=(10, 8)) # 设置显示窗口大小
wc.generate_from_frequencies(word_counts) # 从字典生成词云
image_colors = wordcloud.ImageColorGenerator(mask) # 从背景图建立颜色方案
wc.recolor(color_func=image_colors) # 将词云颜色设置为背景图方案
mpl.rcParams['font.sans-serif'] = ['SimHei']
plt.suptitle('词频分析') #这里设置中文可能会乱码,需要导包
plt.imshow(wc) # 显示词云
plt.axis('off') # 关闭坐标轴
plt.show() # 显示图像
wc.to_file('result.jpg') # 无白边保存图片
# fig.savefig('result01.jpg') # 有白边保存

http://www.lryc.cn/news/393694.html

相关文章:

  • MySQL 常见错误及解决方案
  • STM32 - 内存分区与OTA
  • RAG理论:ES混合搜索BM25+kNN(cosine)以及归一化
  • 分享大厂对于缓存操作的封装
  • 冯诺依曼体系结构与操作系统(Linux)
  • 开源六轴协作机械臂myCobot280实现交互式乘法!让学习充满乐趣
  • [C++][CMake][嵌套的CMake]详细讲解
  • 尚品汇-(十三)
  • python小练习04
  • 小试牛刀-Solana合约账户详解
  • Spring Boot+Vue项目从零入手
  • Vue+Xterm.js+WebSocket+JSch实现Web Shell终端
  • 用 adb 来模拟手机插上电源和拔掉电源的情形
  • 【SPIE独立出版】第四届智能交通系统与智慧城市国际学术会议(ITSSC 2024)
  • 【Unity数据交互】如何Unity中读取Ecxel中的数据
  • 基于深度学习LightWeight的人体姿态检测跌倒系统源码
  • SpringBoot 生产实践:没有父 starter 的打包问题
  • IDEA配Git
  • 51单片机STC89C52RC——14.1 直流电机调速
  • AI对于高考和IT行业的深远影响
  • C语言下的文件详解
  • Oracle PL / SQL块结构
  • MySQL的安装和启动
  • Prometheus概述
  • 【SQL】什么是最左前缀原则/最左匹配原则
  • java项目配置logback日志
  • Python入门 2024/7/6
  • ChatGPT4深度解析:探索智能对话新境界
  • 触底加载的两种思路(以vue3前端和nodejs后端为例)
  • tobias实现支付宝支付