Python对网页内容作词云图分析
|Word count:411|Reading time:1min|Post View:
Python
对网页内容作词云图分析
在线生成词云图
定制性比较强,支持中文,但是图中的词需要手动输入。
https://wordart.com/
支持分析大段文字并生成词云图,但是功能相对比较简单。
http://www.picdata.cn/picdata/index.php
Python 生成词云图
本文介绍使用 Python 程序生成词云图,它依赖的三方库 wordcloud 需要编译
C++ 库,在 Windows 搭建环境比较复杂,建议在 Linux 系统中安装使用。
下例中使用了 urllib 库从抓取网页内容,jieba 库用于分词,wordcould
库用于生成词云,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| import matplotlib.pyplot as plt import jieba from wordcloud import WordCloud import urllib.request import html2text %matplotlib inline
#url = 'https://mp.weixin.qq.com/s/Pr04533M2chdA3pVA8idNA' url = 'http://baijiahao.baidu.com/s?id=1645663163087703799&wfr=spider&for=pc' page = urllib.request.urlopen(url) contents = page.read().decode() h = html2text.HTML2Text() h.ignore_links=True # 去掉超链接 text = h.handle(contents) text = text.replace(' ', '') text = text.replace('*', '') text = text.replace('\n', ' ') cut_text = jieba.cut(text) # 分词 result = " ".join(cut_text) print(result) wc = WordCloud( font_path='simhei.ttf', background_color='white', width=1000, height=600, max_font_size=50, min_font_size=10, max_words=200, mask=plt.imread('star.jpg') #mask图片 ) wc.generate(result) wc.to_file('ciyun.png') #图片保存 plt.imshow(wc) # 显示图片 plt.axis('off') #关闭坐标 plt.show()
|
读者替换网址后,重新运行即可生成词云图。其中的 mask
图片用于设置词云的形状,本例中使用了背景为白色,前景为黑色的图片
star.jpg(注意使用 jpg 格式图片),效果如下图所示(左侧为
mask,右侧为生成的词云图):