### 1. 需求说明

本项目基于Python爬虫,爬取豆瓣电影上关于复仇者联盟3的所有影评,并保存至本地文件。然后对影评进行分词分析,使用词云生成树人格鲁特的形象照片。

### 2. 代码实现

此部分主要解释Python爬虫部分及使用词云生成图像的代码

###### Python爬虫

首先获取需要爬取的网页地址,然后通过requests.get()方式去获取网页,代码如下:

```python

# 获取网页

def getHtml(url):

try:

r = requests.get(url, timeout=30)

r.raise_for_status()

return r.text

except:

return ''

```

获取到网页之后,对网页中的元素进行正则匹配,找到评论相关的元素,并获取。

```

# 获取某个网页中的影评

def getComment(html):

soup = BeautifulSoup(html, 'html.parser')

comments_list = []

comment_nodes = soup.select('.comment > p')

for node in comment_nodes:

comments_list.append(node.get_text().strip().replace("\n", "") + u'\n')

return comments_list

```

将爬取到的影评保存至文本文件中,以备后续分析使用。

```

def saveCommentText(fpath):

pre_url = "https://movie.douban.com/subject/24773958/comments?"

depth = 8

with open(fpath, 'a', encoding='utf-8') as f:

for i in range(depth):

url = pre_url + 'start=' + str(20 * i) + '&limit=20&sort=new_score&' + 'status=P'

html = getHtml(url)

f.writelines(getComment(html))

time.sleep(1 + float(random.randint(1, 20)) / 20)

```

###### 基于词云生成图像

> 注释比较详细,可以看注释说明

```python

def drawWordcloud():

with codecs.open('text.txt', encoding='utf-8') as f:

comment_text = f.read()

# 设置背景图片,可替换为img目录下的任何一张图片

color_mask = imread("img\Groot4.jpeg")

# 停用词设置

Stopwords = [u'就是', u'电影', u'你们', u'这么', u'不过', u'但是',

u'除了', u'时候', u'已经', u'可以', u'只是', u'还是', u'只有', u'不要', u'觉得', u','u'。']

# 设置词云属性

cloud = WordCloud(font_path="simhei.ttf",

background_color='white',

max_words=260,

max_font_size=150,

min_font_size=4,

mask=color_mask,

stopwords=Stopwords)

# 生成词云, 可以用generate输入全部文本,也可以我们计算好词频后使用generate_from_frequencies函数

word_cloud = cloud.generate(comment_text)

# 从背景图片生成颜色值(注意图片的大小)

image_colors = ImageColorGenerator(color_mask)

# 显示图片

plt.imshow(cloud)

plt.axis("off")

# 绘制词云

plt.figure()

plt.imshow(cloud.recolor(color_func=image_colors))

plt.axis("off")

plt.figure()

plt.imshow(color_mask, cmap=plt.cm.gray)

plt.axis("off")

plt.show()

# 保存图片

word_cloud.to_file("img\comment_cloud.jpg")

```

###### 为了方便阅读,这里贴出整体过程编码:

```

def getHtml(url):

try:

r = requests.get(url, timeout=30)

r.raise_for_status()

return r.text

except:

return ''

def getComment(html):

soup = BeautifulSoup(html, 'html.parser')

comments_list = []

comment_nodes = soup.select('.comment > p')

for node in comment_nodes:

comments_list.append(node.get_text().strip().replace("\n", "") + u'\n')

return comments_list

def saveCommentText(fpath):

pre_url = "https://movie.douban.com/subject/24773958/comments?"

depth = 8

with open(fpath, 'a', encoding='utf-8') as f:

for i in range(depth):

url = pre_url + 'start=' + str(20 * i) + '&limit=20&sort=new_score&' + 'status=P'

html = getHtml(url)

f.writelines(getComment(html))

time.sleep(1 + float(random.randint(1, 20)) / 20)

def cutWords(fpath):

text = ''

with open(fpath, 'r', encoding='utf-8') as fin:

for line in fin.readlines():

line = line.strip('\n')

text += ' '.join(jieba.cut(line))

text += ' '

with codecs.open('text.txt', 'a', encoding='utf-8') as f:

f.write(text)

def drawWordcloud():

with codecs.open('text.txt', encoding='utf-8') as f:

comment_text = f.read()

# 设置背景图片

color_mask = imread("img\Groot4.jpeg")

# 停用词设置

Stopwords = [u'就是', u'电影', u'你们', u'这么', u'不过', u'但是',

u'除了', u'时候', u'已经', u'可以', u'只是', u'还是', u'只有', u'不要', u'觉得', u','u'。']

# 设置词云属性

cloud = WordCloud(font_path="simhei.ttf",

background_color='white',

max_words=260,

max_font_size=150,

min_font_size=4,

mask=color_mask,

stopwords=Stopwords)

# 生成词云, 可以用generate输入全部文本,也可以我们计算好词频后使用generate_from_frequencies函数

word_cloud = cloud.generate(comment_text)

# 从背景图片生成颜色值(注意图片的大小)

image_colors = ImageColorGenerator(color_mask)

# 显示图片

plt.imshow(cloud)

plt.axis("off")

# 绘制词云

plt.figure()

plt.imshow(cloud.recolor(color_func=image_colors))

plt.axis("off")

plt.figure()

plt.imshow(color_mask, cmap=plt.cm.gray)

plt.axis("off")

plt.show()

# 保存图片

word_cloud.to_file("img\comment_cloud.jpg")

```

###三、项目结构

> 项目结构

![](/contentImages/image/20180521/ecX8WtDp4hbtxshyr5S.jpg)

> 注意整个项目只有一个源码文件,其他的为图片文件

###四、运行效果图

一大波格鲁特来袭

> 格鲁特1号

![](http://p6v1c8fgh.bkt.clouddn.com/groot1.jpg)

> 格鲁特2号

![](http://p6v1c8fgh.bkt.clouddn.com/groot3.jpg)

> 格鲁特3号

![](http://p6v1c8fgh.bkt.clouddn.com/groot4.jpg)

> 格鲁特4号

![](http://p6v1c8fgh.bkt.clouddn.com/groot5.jpg)

python爬取评论_Python爬取豆瓣《复仇者联盟3》评论并生成乖萌的格鲁特相关推荐

  1. Python爬取豆瓣《复仇者联盟3》评论并生成乖萌的格鲁特

    代码地址如下: http://www.demodashi.com/demo/13257.html 1. 需求说明 本项目基于Python爬虫,爬取豆瓣电影上关于复仇者联盟3的所有影评,并保存至本地文件 ...

  2. python爬取豆瓣电影评论_python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法...

    def getHtml(url): """获取url页面""" headers = {'User-Agent':'Mozilla/5.0 ( ...

  3. python爬虫淘宝评论_Python爬取淘宝店铺和评论

    1 安装开发需要的一些库 (1) 安装mysql 的驱动:在Windows上按win+r输入cmd打开命令行,输入命令pip install pymysql,回车即可. (2) 安装自动化测试的驱动s ...

  4. python爬携程景区评论_python爬取携程景点评论信息

    python爬取携程景点评论信息 今天要分析的网站是携程网,获取景点的用户评论,评论信息通过json返回API,页面是这个样子的 按下F12之后,F5刷新一下 具体需要URL Request的方式为P ...

  5. python抓取微博评论_Python爬取新浪微博评论数据,你有空了解一下?

    开发工具 Python版本:3.6.4 相关模块: argparse模块: requests模块: jieba模块: wordcloud模块: 以及一些Python自带的模块. 环境搭建 安装Pyth ...

  6. python爬取流浪地球_python爬取《流浪地球》获十几万评论点赞,超给力!

    原标题:python爬取<流浪地球>获十几万评论点赞,超给力! 我自己到现在其实还没看这部电影,毕竟这电影这么火,电影院现在都很难买到好的位置.所以我打算不如先看看大家是怎么评价这部电影的 ...

  7. python爬取流浪地球_python爬取《流浪地球》16w评论

    今年春节档电影<流浪地球>火的不要不要,截止到今天 2 月 17 日,上映 13 天,目前票房已达 36 亿,可喜可贺. 我自己到现在其实还没看这部电影,毕竟这电影这么火,电影院现在都很难 ...

  8. 按15分钟取数据_Python爬取猫眼电影《飞驰人生》4万多条评论并对其进行数据分析...

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: Yura不说数据说 ,PYuraL PS:如有需要Python学习资 ...

  9. python获取天气分析_Python爬取南京市往年天气预报,使用pyecharts进行分析

    上一次分享了使用matplotlib对爬取的豆瓣书籍排行榜进行分析,但是发现python本身自带的这个绘图分析库还是有一些局限,绘图不够美观等,在网上搜索了一波,发现现在有很多的支持python的绘图 ...

最新文章

  1. Golang Study 三 map的顺序输出
  2. linux mysql 不稳定_Linux服务器mysql数据库自动停止的解决方法 | 很文博客
  3. verilog 计数器_HDLBits: 在线学习 Verilog ()
  4. Mysql分页加pagebean_Spring+MyBatis+SpringMvc+Mysql+Druid+PageHelper分页实现
  5. jQuery基本语法
  6. 最近都在谈的「私域流量」,究竟有没有前途?
  7. iPhone:创建、连接和使用静态库(过时了,仅参考)
  8. 关于信息安全工作方法论的一点猜想
  9. linux各个版本下载地址,利用镜像服务器下载
  10. 2015年4月工作记录和阅读记录
  11. 3年才能驾驭新技术,不如试试这个低代码魔方
  12. 基于51单片的电风扇系统
  13. 600,000,002,200,300,400等开头的股票都是什么意思
  14. 光电特性传感器实验台
  15. Python repr()函数
  16. Spyder 中 Reloaded modules 错误的解决方法
  17. 秒懂Android属性动画
  18. 股票接口level2的短线动力指标公式源码是什么?
  19. stm32利用外部中断控制小台灯
  20. 【凯子哥带你夯实应用层】都说“知乎”逼格高,我们来实现“知乎”回答详情页动画效果

热门文章

  1. 什么是脏读?幻读?不可重复读?
  2. [软件人生]也谈谈支付宝五福
  3. 杭州seo工资高吗?杭州做seo工资一般多少
  4. 计算机网络(六):链路层
  5. DC/DC电源介绍及应用要点
  6. 基于Docker的Python开发
  7. python字典嵌套字典构造_浅析python 字典嵌套
  8. jmeter接口测试3-正则表达式提取器的使用
  9. 1.Concurrent概述
  10. 老国企如何焕发新势能?致远互联“协同五环”锻造老而弥坚