Python爬取哆啦A梦-伴我同行2豆瓣影评并生成词云图

一、前言

通过这篇文章,你将会收货:

① 豆瓣电影数据的爬取;

② 手把手教你学会词云图的绘制;

二、豆瓣爬虫步骤

当然,豆瓣上面有很多其他的数据,值得我们爬取后做分析。但是本文我们仅仅爬取评论信息。

待爬取网址:

https://movie.douban.com/subject/34913671/comments?status=P

由于只有一个字段,我们直接使用re正则表达式,解决该问题。

那些爬虫小白看过来,这又是一个你们练手的好机会。

下面直接为大家讲述爬虫步骤:

# 1. 导入相关库,用什么库,都写在这里
import requests
import chardet
import re

# 2. 构造请求头,这是一个反扒措施,初期学会总结,哪些网站都用了哪些,总结多了,用起来就得心应手。
headers = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36',
    #在爬虫里面如果出现了Referer最好也粘上去,因为有时候服务器会根据Referer来判断请求时由浏览器还是爬虫发出的
    'Referer':'https://www.douban.com/'
}

# 3. 这个循环,类似于翻页操作
for i in range(0,1001,20):
    url = f"https://movie.douban.com/subject/34913671/comments?start={i}&limit=20&status=P&sort=new_score"
    # 4. 使用requests库发起请求
    response = requests.get(url,headers=headers)#发起请求得到响应
    # 5. 有时候返回结果可能会乱码,这里记得调用encoding属性,修改编码
    response.encoding = "utf-8"
    # 6. 获取返回的结果,调用的是text属性。一定要区分text和content属性的区别
    text = response.text#返回一个经过解码的字符串
    # 7. 解析数据,这里直接使用正则解析
    comments_list = [i for i in re.findall('<span class="short">(.*?)</span>',text,re.S)]
    # 8. 数据存储,针对列表中的每一条数据,我们直接使用open()函数,写入到txt文档
    for comment in comments_list:
         with open(r"哆啦A梦:伴我同行2.txt","a",encoding = "utf-8") as f :
                    f.write(comment + "\n")

三、最终效果如下

四、词云图制作流程

很多同学不会制作词云图,借此机会,我这里写一套详细的流程,大家照猫画虎就行。

绘制词云图的详细步骤如下:

  • ① 导入相关库;
  • ② 读取文本文件,使用jieba库动态修改词典;
  • ③ 使用jieba库中的lcut()方法进行分词;
  • ④ 读取停用词,添加额外停用词,并去除停用词;
  • ⑤ 词频统计;
  • ⑥ 绘制词云图

① 导入相关库

在这里,你需要什么库,就导入什么库。

import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from imageio import imread

import warnings
warnings.filterwarnings("ignore")

② 读取文本文件,使用jieba库动态修改词典

这里with open()读取文本文件,我就不解释了。这里解释一下动态修改词典

sentence = "湖北广水第三条街,有一条狗"

list(jieba.cut(sentence))

结果如下:

针对上述切分结果,如果我们想把“湖北广水”和“第三条街”都当成一个完整词,而不切分开,怎么办呢?此时,就需要借助add_word()方法,动态修改词典。

sentence = "湖北广水第三条街,有一条狗"

jieba.add_word("湖北广水")
jieba.add_word("有一条狗")

list(jieba.cut(sentence))

结果如下:

总结:

  • jieba.add_word()方法,只能一个个动态添加某个词语。
  • 假如我们需要动态添加多个词语的时候,就需要使用jieba.load_userdict()方法。也就是说:将所有的自定义词语,放到一个文本中,然后使用该方法,一次性动态修改词典集。

有了上述基础,我们直接读取文本后,动态修改词典。

with open(r"哆啦A梦:伴我同行2.txt",encoding="utf-8") as f:
    txt = f.read()
txt = txt.split()

jieba.add_word("哆啦A梦")
jieba.add_word("大雄")

③ 使用jieba库中的lcut()方法进行分词

短短的一行代码,很简单。

data_cut = [jieba.lcut(x) for x in txt]

④ 读取停用词,添加额外停用词,并去除停用词

读取停用词,采用split()函数切分后,会得到一个停用词列表。接着,采用+号将额外停用词,添加到列表中即可。

# 读取停用词
with open(r"stoplist.txt",encoding="utf-8") as f:
    stop = f.read()
stop = stop.split()
# 额外添加停用词,这里我们只添加了一个空格
stop = [" "] + stop
# 去除停用词
s_data_cut = pd.Series(data_cut)
all_words_after = s_data_cut.apply(lambda x:[i for i in x if i not in stop])

⑤ 词频统计

这里注意series中value_counts()的使用。

all_words = []
for i in all_words_after:
    all_words.extend(i)

word_count = pd.Series(all_words).value_counts()

⑥ 绘制词云图

# 1、读取背景图片
back_picture = imread(r"aixin.jpg")

# 2、设置词云参数
wc = WordCloud(font_path="simhei.ttf",
               background_color="white",
               max_words=2000,
               mask=back_picture,
               max_font_size=200,
               random_state=42
              )
wc2 = wc.fit_words(word_count)

# 3、绘制词云图
plt.figure(figsize=(16,8))
plt.imshow(wc2)
plt.axis("off")
plt.show()
wc.to_file("ciyun.png")

五、效果图

从词云图大致可以看出:这又是一部催泪电影,这是一部情怀电影,陪伴我们长大的大雄都结婚了?那我们呢?其实我们小时候,就盼望着大雄和静香能够是好盆友,就在这部电影,他们结婚了。这部电影应该怎么上演呢?大家可以去电影院一探究竟。

到此这篇关于Python爬取哆啦A梦-伴我同行2豆瓣影评并生成词云图的文章就介绍到这了,更多相关Python爬取影评并生成词云图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python根据文本生成词云图代码实例

    这篇文章主要介绍了python根据文本生成词云图代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 效果 代码 from wordcloud import WordCloud import codecs import jieba #import jieba.analyse as analyse from scipy.misc import imread import os from os import path import matplot

  • Python采集猫眼两万条数据 对《无名之辈》影评进行分析

    一.说明 本文主要讲述采集猫眼电影用户评论进行分析,相关爬虫采集程序可以爬取多个电影评论. 运行环境:Win10/Python3.5. 分析工具:jieba.wordcloud.pyecharts.matplotlib. 基本流程:下载内容 ---> 分析获取关键数据 ---> 保存本地文件 ---> 分析本地文件制作图表 注意:本文所有图文和源码仅供学习,请勿他用,转发请注明出处! 本文主要参考:https://mp.weixin.qq.com/s/mTxxkwRZPgBiKC3Sv-

  • Python多线程爬取豆瓣影评API接口

    爬虫库 使用简单的requests库,这是一个阻塞的库,速度比较慢. 解析使用XPATH表达式 总体采用类的形式 多线程 使用concurrent.future并发模块,建立线程池,把future对象扔进去执行即可实现并发爬取效果 数据存储 使用Python ORM sqlalchemy保存到数据库,也可以使用自带的csv模块存在CSV中. API接口 因为API接口存在数据保护情况,一个电影的每一个分类只能抓取前25页,全部评论.好评.中评.差评所有分类能爬100页,每页有20个数据,即最多为

  • Python爬取英雄联盟MSI直播间弹幕并生成词云图

    一.环境准备 安装相关第三方库 pip install jieba pip install wordcloud 二.数据准备 爬取对象:2021年5月23号,RNG夺冠直播间的弹幕信息 爬取对象路径: 方式1.根据开发者工具(F12),获取请求url.请求头.cookie等信息: 方式2:根据直播地址url,前+字符i 我们这里演示的是,采用方式2. 三.代码如下 import requests, re import jieba, wordcloud """ # 以下是练习代

  • 利用Python爬取微博数据生成词云图片实例代码

    前言 在很早之前写过一篇怎么利用微博数据制作词云图片出来,之前的写得不完整,而且只能使用自己的数据,现在重新整理了一下,任何的微博数据都可以制作出来,一年一度的虐汪节,是继续蹲在角落默默吃狗粮还是主动出击告别单身汪加入散狗粮的行列就看你啦,七夕送什么才有心意,程序猿可以试试用一种特别的方式来表达你对女神的心意.有一个创意是把她过往发的微博整理后用词云展示出来.本文教你怎么用Python快速创建出有心意词云,即使是Python小白也能分分钟做出来.下面话不多说了,来一起看看详细的介绍吧. 准备工作

  • Python爬虫实战:分析《战狼2》豆瓣影评

    刚接触python不久,做一个小项目来练练手.前几天看了<战狼2>,发现它在最新上映的电影里面是排行第一的,如下图所示.准备把豆瓣上对它的影评做一个分析. 目标总览 主要做了三件事: 抓取网页数据 清理数据 用词云进行展示 使用的python版本是3.5. 一.抓取网页数据 第一步要对网页进行访问,python中使用的是urllib库.代码如下: from urllib import request resp = request.urlopen('https://movie.douban.co

  • Python通过文本和图片生成词云图

    使用现有的txt文本和图片,就可以用wordcloud包生成词云图.大致步骤是: 1.读取txt文本并简单处理: 2.读取图片,以用作背景: 3.生成词云对象,保存为文件. 需要用到3个库:jieba(用于分割文本为词语).imageio(用于读取图片).wordcloud(功能核心,用于生成词云). 我用简历和我的照片,生成了一个词云图: 代码如下: import jieba import imageio import wordcloud # 读取txt文本 with open('resume

  • Python实现Wordcloud生成词云图的示例

    wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概. 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前,首先要做一些准备工作 1.安装结巴分词库 pip install jieba Python中的分词模块有很多,他们的功能也都是大同小异,我们安装的结巴分词 是当前使用的最多的类型. 下面我来简单介绍一下结巴分词的用法 结巴分词的分词模式分为三种: (1)全模式:把句子中所有的可以成词的词语都扫描出

  • 使用Python抓取豆瓣影评数据的方法

    抓取豆瓣影评评分 正常的抓取 分析请求的url https://movie.douban.com/subject/26322642/comments?start=20&limit=20&sort=new_score&status=P&percent_type= 里面有用的也就是start和limit参数,我尝试过修改limit参数,但是没有效果,可以认为是默认的 start参数是用来设置从第几条数据开始查询的 设计查询列表,发现页面中有url中的查询部分,且指向下一个页面

  • 基于python生成英文版词云图代码实例

    使用wordcloud模块,生成云图,测试文本为: Betty Botter bought some butter but she said the butter's bitter. If I put it in my batter it will make my batter bitter. So, she bought some better butter, better than the bitter butter and she put it in her batter and her

随机推荐