Python Wordcloud 词云------实站:爬取起点网站《大王饶命》,结合词云展示数据

本文主要是介绍Python Wordcloud 词云------实站:爬取起点网站《大王饶命》,结合词云展示数据,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

  1、Wordcloud介绍和安装

  2、Wordcloud 参数介绍

  3、Wordcloud 实现操作

实战:爬取小说网站,结合jieba 和wordcloud展示小说中最常见的词语,分析展示数据。

注明:本地文件要有图片,txt文本,就可拿到代码直接执行,如果不行联系:qq:3440037784

wordcloud 介绍和安装:

wordcloud 简单利用英语来看就是词云,它是以词语为基本单位,更加直观的展示出我们的内容。

wordcloud 的安装:pip3 install wordcloud

环境介绍: pycharm 2017.2.3 + python 3.5.0

  1. wordcloud 的基本格式
#导入词云
from wordcloud import WordCloud
#打开文件并且读取完全
f = open('1.txt','r')
#创建wc设个实例对象,里面可传递相应的参数
#generate根据文本生成词云
wc = WordCloud(background_color='white',width=500,height=366,margin=2
).generate(f.read())
#to_file 输出到文件
wc.to_file('./image/0.jpg')
运行结果入下所示:
带入图片的基本格式:

  #导入词云from wordcloud import WordCloud
#图像处理函数pip install imageio
from imageio import imread
#打开文件并且读取完全
f = open('1.txt','r')#Read an image from a file as an array
#解析图片,将图片变成一个数组
mk = imread('9.png')#创建wc设个实例对象,里面可传递相应的参数
#generate根据文本生成词云
wc = WordCloud(mask=mk,background_color='white',width=500,height=366,margin=2).generate(f.read())#to_file 输出到文件
wc.to_file('./image/0.jpg')

 

Wordcloud 参数介绍

  mask:遮罩图,字的大小布局和颜色都会依据遮罩图生成。其实理论上这对字大小和清晰程度的影响不大,

  但是遮罩图色和背景色background_color如果易混淆,则可能是一个导致看起来不清晰的因素;

  另外遮罩图自身各个颜色之间的对比不强烈,也可能使图看起来层次感不够。

  background_color:背景色,默认黑。

  这个本来其实也不怎么影响清晰度,但是,就像之前在mask中提到的,如果遮罩图像颜色过浅、背景设置白色,

  可能导致字看起来“不清晰”。而实际上,我对一个浅色遮罩图分别用白、黑两种背景色后发现,

  黑色背景的强烈对比之下会有若干很浅也很小的词浮现出来,而之前因背景色、字色过于相近而几乎无法用肉眼看出这些词。

    mode:默认“RGB”。根据说明文档,如果想设置透明底色的云词图,那么可以设置background_color=None, mode="RGBA"

    max_font_size:最大字号。源文件中也有讲到,图的生成会依据最大字号等因素去自动判断词的布局。

  经测试,哪怕同一个图像,只要图本身尺寸不一样(比如我把一个300×300的图拉大到600×600再去当遮罩),那么同样的字号也是会有不同的效果。

  原理想想也很自然,字号决定了字的尺寸,而图的尺寸变了以后,最大字相对于图的尺寸比例自然就变了。

    min_font_size:最小字号。不设置的情况下,默认是4。

  尝试了设置比4大的字号,例如8、10,结果就是原本小于设定值且大于4号的词都直接不显示了,其它内容和未设置该值时都一样。

    relative_scaling:表示词频和云词图中字大小的关系参数,默认0.5。

  为0时,表示只考虑词排序,而不考虑词频数;为1时,表示两倍词频的词也会用两倍字号显示。

    scale:根据说明文档,当云词图很大的,加大该值会比使用更大的图更快,但值越高也会越慢(计算更复杂)。

  默认值是1。实际测试中,更大的值,确实输出图像看起来更精细(较小较浅的词会颜色更重,也感觉清楚,大的词差异不明显)。

  不过,可能由于我选的图不大、词也没有很多,所以差距并没有很大,缩小排列一下就基本上辨别不出多少差别了。

 

实战:爬取小说网站小说,并结合jieba 还有wordcloud 看看现在小说内容中都是有那些词语出现的多。
 

# -*- coding: utf-8 -*-
# @Time    : 2018/9/12 14:43
# @Author  : for
# @File    : 爬虫_词云.py
# @Software: PyCharm
import jieba
from scipy.misc import imread  # 这是一个处理图像的函数
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import matplotlib.pyplot as plt
from urllib import request
import time
from lxml import etree
#定义请求的地址
url = "https://read.qidian.com/chapter/9r9u8W1evJUCpOPIBxLXdQ2/eSlFKP1Chzg1"
#请求的头部
headers = {"Referer": "https://www.qiushibaike.com/","User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36"
}
#构建请求
req = request.Request(url = url,headers = headers)
#发起请求
response = request.urlopen(req)
#接收返回的内容,返回的内容以类文件的形式返回
content = response.read().decode()
xpath_content =  etree.HTML(content)
new_content = xpath_content.xpath('//*[@id="chapter-382639401"]/div/div/p/text()')
with open('2.txt','w',encoding='utf-8') as f:for i in new_content:f.writelines(i.strip())
time.sleep(2)back_color = imread('1.png')  # 解析该图片wc = WordCloud(background_color='white',  # 背景颜色max_words=1000,  # 最大词数mask=back_color,  # 以该参数值作图绘制词云,这个参数不为空时,width和height会被忽略max_font_size=100,  # 显示字体的最大值stopwords=STOPWORDS.add('国'),  # 使用内置的屏蔽词,再添加'苟利国'# font_path="C:/Windows/Fonts/STFANGSO.ttf",  # 解决显示口字型乱码问题,可进入C:/Windows/Fonts/目录更换字体font_path='C:\Windows\Fonts\simfang.ttf',random_state=42,  # 为每个词返回一个PIL颜色# width=1000,  # 图片的宽# height=860  #图片的长)
# WordCloud各含义参数请点击 wordcloud参数# 添加自己的词库分词,比如添加'金三胖'到jieba词库后,当你处理的文本中含有金三胖这个词,
jieba.add_word('我是王')# 打开词源的文本文件
text = open('2.txt',encoding='utf-8').read()# 该函数的作用就是把屏蔽词去掉,使用这个函数就不用在WordCloud参数中添加stopwords参数了
# 把你需要屏蔽的词全部放入一个stopwords文本文件里即可
def stop_words(texts):words_list = []word_generator = jieba.cut(texts, cut_all=False)  # 返回的是一个迭代器with open('stopwords.txt',encoding='utf-8') as f:str_text = f.read()unicode_text = str_text # 把str格式转成unicode格式f.close()  # stopwords文本中词的格式是'一词一行'for word in word_generator:if word.strip() not in str_text:words_list.append(word)return ' '.join(words_list)  # 注意是空格text = stop_words(text)wc.generate(text)
# 基于彩色图像生成相应彩色
image_colors = ImageColorGenerator(back_color)
# 显示图片plt.imshow(wc)# 关闭坐标轴
plt.axis('off')
# 绘制词云
plt.figure()
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis('off')
# plt.show()
# 保存图片保存到当前路径下的image文件夹下,没有文件夹自行创建
wc.to_file('./image/maikou.png')

 

这篇关于Python Wordcloud 词云------实站:爬取起点网站《大王饶命》,结合词云展示数据的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/691157

相关文章

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python ZIP文件操作技巧详解

《PythonZIP文件操作技巧详解》在数据处理和系统开发中,ZIP文件操作是开发者必须掌握的核心技能,Python标准库提供的zipfile模块以简洁的API和跨平台特性,成为处理ZIP文件的首选... 目录一、ZIP文件操作基础三板斧1.1 创建压缩包1.2 解压操作1.3 文件遍历与信息获取二、进阶技

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

Python正则表达式语法及re模块中的常用函数详解

《Python正则表达式语法及re模块中的常用函数详解》这篇文章主要给大家介绍了关于Python正则表达式语法及re模块中常用函数的相关资料,正则表达式是一种强大的字符串处理工具,可以用于匹配、切分、... 目录概念、作用和步骤语法re模块中的常用函数总结 概念、作用和步骤概念: 本身也是一个字符串,其中

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py