运行效果:
项目结构
import jieba
from matplotlib import pyplot as plt
from wordcloud import WordCloud
from PIL import Image
import numpy as np
import sqlite3
def get_text():
"""
获取简介文本
:return:获取的字符串
"""
con = sqlite3.connect("E:\PYcharm\learn_flask\movie.db")
cur = con.cursor()
string = ""
sql = "select info from movie_top"
data = cur.execute(sql)
for item in data: # 把查询到的数据转换成字符串,防止游标关闭数据没有加载完
string = string + item[0]
con.commit()
cur.close()
con.close()
return string
def cut_text(text):
"""
通过jieba.cut()把文章拆分为词
:param text: 简介文本
:return: 词条字符串
"""
cut = jieba.cut(text) # 使用jieba模板,把文本拆分为词
string = ' '.join(cut)
return string
def draw(string):
img = Image.open(r'./tree.jpg') # 打开遮挡图片
img_arr = np.array(img) # 利用numpy,返回一个数组
# 创建一个词云对象
wc = WordCloud(
background_color='white',
mask=img_arr,
font_path='msyh.ttc' # 字体
)
wc.generate_from_text(string) # 使用词条生成词云
fig = plt.figure("豆瓣Top250") # 创建一个画布
plt.imshow(wc)
plt.axis('off')
plt.show()
if __name__ == "__main__":
text = get_text() # 从数据库中读取文本
string = cut_text(text) # 把文本拆分为词条
draw(string) # 构建词云