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

相关文章

Python按照24个实用大方向精选的上千种工具库汇总整理

《Python按照24个实用大方向精选的上千种工具库汇总整理》本文整理了Python生态中近千个库,涵盖数据处理、图像处理、网络开发、Web框架、人工智能、科学计算、GUI工具、测试框架、环境管理等多... 目录1、数据处理文本处理特殊文本处理html/XML 解析文件处理配置文件处理文档相关日志管理日期和

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

使用Python开发一个Ditto剪贴板数据导出工具

《使用Python开发一个Ditto剪贴板数据导出工具》在日常工作中,我们经常需要处理大量的剪贴板数据,下面将介绍如何使用Python的wxPython库开发一个图形化工具,实现从Ditto数据库中读... 目录前言运行结果项目需求分析技术选型核心功能实现1. Ditto数据库结构分析2. 数据库自动定位3

Python yield与yield from的简单使用方式

《Pythonyield与yieldfrom的简单使用方式》生成器通过yield定义,可在处理I/O时暂停执行并返回部分结果,待其他任务完成后继续,yieldfrom用于将一个生成器的值传递给另一... 目录python yield与yield from的使用代码结构总结Python yield与yield

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

pandas数据的合并concat()和merge()方式

《pandas数据的合并concat()和merge()方式》Pandas中concat沿轴合并数据框(行或列),merge基于键连接(内/外/左/右),concat用于纵向或横向拼接,merge用于... 目录concat() 轴向连接合并(1) join='outer',axis=0(2)join='o

Django开发时如何避免频繁发送短信验证码(python图文代码)

《Django开发时如何避免频繁发送短信验证码(python图文代码)》Django开发时,为防止频繁发送验证码,后端需用Redis限制请求频率,结合管道技术提升效率,通过生产者消费者模式解耦业务逻辑... 目录避免频繁发送 验证码1. www.chinasem.cn避免频繁发送 验证码逻辑分析2. 避免频繁

批量导入txt数据到的redis过程

《批量导入txt数据到的redis过程》用户通过将Redis命令逐行写入txt文件,利用管道模式运行客户端,成功执行批量删除以Product*匹配的Key操作,提高了数据清理效率... 目录批量导入txt数据到Redisjs把redis命令按一条 一行写到txt中管道命令运行redis客户端成功了批量删除k

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group