python wordcloud
python wordcloud 对电影《我不是潘金莲》制作词云
上个星期五(16/11/18)去看了冯小刚的最新电影《我不是潘金莲》,电影很长,有点黑色幽默。看完之后我就去知乎,豆瓣电影等看看大家对于这部电影的评价。果然这是一部很有争议的电影,无论是在知乎还是豆瓣,大家对这部电影褒贬不一,有的说拍的好,寓意深刻,具有很强的现实讽刺意味,也有的说故作矫情,是一部烂片。大家众说纷纭,那么这部电影到底怎么样呢?我想还是用事实说话比较好。我想到最近刚好我学习了一段时间的爬虫了,也知道词云可以形象地反映词语分布。所以我决定亲自动手对《我不是潘金莲》制作一个词云。
先说一下使用的工具:python2.7.12 wordcloud1.2.1 selenium2.53.6 jieba(一个中文分词工具) 分析的文本来源为豆瓣电影下《我不是潘金莲》的1.6W+评论。
selenium 是一个可以操纵浏览器的爬虫工具,对于抓取动态页面(js生成的页面)非常方便。这里之所以使用selenium的一个主要原因是,电影的评论只有在登录之后才可以全部抓取,如果使用urllib2等标准库模拟登录,因为还要处理验证码等,略显麻烦,而使用selenium则非常简便。
jieba 是一个优秀的中文分词工具,功能强大并且使用简便,这里因为涉及到中文,wordcloud对于中文的分词支持不是特别好,所以需要我们手动分词,我把这个任务交给了jieba。
制作词云的流程如下:
1.使用selenium 登录豆瓣,抓取《我不是潘金莲》下所有电影评论,并且保存到txt文件(一行是一条评论)
2. 使用jieba 对于评论进行分词,得到新的文本
3. 对于新的文本 使用wordcloud 进行制作词云
话不多说,下面直接贴代码:
按 Ctrl+C 复制代码 按 Ctrl+C 复制代码
有几点需要说明:
1.使用selenium简化了登录抓取过程,但是也有一个缺点,因为需要启动浏览器,所以抓取效率就比较低,电影评论页数较多,有时会出现网页加载过慢等情况导致无法正常抓取数据。所以这里使用n,count作为标记,记录意外退出时上次抓取的位置,这样下次可以继续从上次中断的地方抓取。
2. wordcloud 默认的是英文字体,所以在WordCloud()方法中需要指定一个中文字体的位置(可以使用windows自带的中文字体,比如宋体,楷体都可以),使用font_path="字体路径"
3. selenium 如果驱动狐火浏览器的话,需要自行下载驱动(一个.exe文件),具体方法可以自行上网搜索,这里不赘述。
最后 下载的评论文本文件我已经放到我的github(https://github.com/Lyrichu/selenium/blob/master/pjl_comment.txt),有兴趣的朋友可以自己下载。最后得到的词云图如下:

python wordcloud的更多相关文章
- Python——wordcloud
import jiebafrom wordcloud import WordCloud,STOPWORDSimport matplotlib.pyplot as pltfrom scipy.misc ...
- python wordcloud 对电影《我不是潘金莲》制作词云
上个星期五(16/11/18)去看了冯小刚的最新电影<我不是潘金莲>,电影很长,有点黑色幽默.看完之后我就去知乎,豆瓣电影等看看大家对于这部电影的评价.果然这是一部很有争议的电影,无论是在 ...
- 超详细:Python(wordcloud+jieba)生成中文词云图
# coding: utf-8 import jieba from scipy.misc import imread # 这是一个处理图像的函数 from wordcloud import WordC ...
- python WordCloud 实现词云
简单示例 from matplotlib import pyplot as plt from wordcloud import WordCloud filename = "text.txt& ...
- 根据词频生成词云(Python wordcloud实现)
网上大多数词云的代码都是基于原始文本生成,这里写一个根据词频生成词云的小例子,都是基于现成的函数. 另外有个在线制作词云的网站也很不错,推荐使用:WordArt 安装词云与画图包 pip3 insta ...
- python网页抓取练手代码
from urllib import request import html.parser class zhuaqu(html.parser.HTMLParser): blogHtml = " ...
- python 文件与数据格式化
https://www.cnblogs.com/li-zhi-qiang/p/9269453.html 文件和数据格式化 https://www.cnblogs.com/li-zhi-qi ...
- wordcloud+jieba
Wordcloud各参数含义 font_path : string #字体路径,需要展现什么字体就把该字体路径+后缀名写上,如:font_path = '黑体.ttf' width : int (de ...
- 【Python成长之路】词云图制作
[写在前面] 以前看到过一些大神制作的词云图 ,觉得效果很有意思.如果有朋友不了解词云图的效果,可以看下面的几张图(图片都是网上找到的): 网上找了找相关的软件,有些软件制作 还要付费.结果前几天在大 ...
随机推荐
- 二维数组 string[,]
string[,] strArr = { {"101","电脑"}, ...
- 关于Activity销毁,而绘制UI的子线程未销毁出现的问题
项目总结 ----------------------------------------------------------------------------------------------- ...
- iOS中发送HTTP请求的方案
在iOS中,常见的发送HTTP请求的方案有 苹果原生(自带) NSURLConnection:用法简单,最古老最经典的一种方案 NSURLSession:功能比NSURLConnection更加强大, ...
- IOS设计模式-备忘录模式
内容大纲 如何存储记录 备忘录模式的基本原理 使用备忘录模式 优化存储方案 恢复UIView的状态 1.如何存储记录 在存储记录时,第一步我们需要用一把钥匙去打开一把锁.第二步,当我们打开锁之后就会有 ...
- JavaScript Patterns 3.3 Patterns for Enforcing new
When your constructor has something like this.member and you invoke the constructor without new, ...
- SQL 报错信息整理及解决方案(持续更新)
整理一下自己遇见过的 SQL 各种报错信息及相应解决方法,方便以后查阅,主要平台为 Oracle: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值: 原因:插入操作时,数据大于字段 ...
- cocos2d-x之文件读写
bool HelloWorld::init() { if ( !Layer::init() ) { return false; } auto fu=FileUtils::getInstance(); ...
- 续Gulp使用入门三步压缩CSS
gulp 压缩css 一.安装 gulp-minify-css 模块 提示:你需要使用命令行的 cd 切换到对应目录后进行安装操作. 在命令行输入 npm install gulp-minify-cs ...
- linux内核编译,配置本机驱动
1.前言 编译linux内核失败的原因很多时候就是驱动选错,适合自己本机的驱动没编译进去.面对特殊平台(或者有些洁癖者,我就是^_^),要编译精简内核,只要本机驱动,其他都不需要.面对内核里面这么多 ...
- Excel Sheet Column Number
Related to question Excel Sheet Column Title Given a column title as appear in an Excel sheet, retur ...