Python爬取《哆啦A梦-伴我同行2》影评,手把手带你绘制词云图!

简介: Python爬取《哆啦A梦-伴我同行2》影评,手把手带你绘制词云图!

豆瓣爬虫步骤

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


待爬取网址:

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


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

image.png

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


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


# 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")



最终效果如下:


image.png

词云图制作流程

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


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


① 导入相关库;

② 读取文本文件,使用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))


结果如下:

image.png

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


sentence = "湖北广水第三条街,有一条狗"
jieba.add_word("湖北广水")
jieba.add_word("有一条狗")
list(jieba.cut(sentence))


结果如下:

image.png

总结:


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")



结果如下:

image.png

相关文章
|
5月前
|
数据采集 自然语言处理 搜索推荐
python【包含数据预处理】基于词频生成词云图
背景目的 有一篇中文文章,或者一本小说。想要根据词频来生成词云图。
|
3月前
|
自然语言处理 数据可视化 搜索推荐
用Python制作酷炫词云图,原来这么简单!
用Python制作酷炫词云图,原来这么简单!
|
4月前
|
数据采集 自然语言处理 大数据
​「Python大数据」词频数据渲染词云图导出HTML
使用Python,本文展示数据聚类和办公自动化,焦点在于通过jieba分词处理VOC数据,构建词云图并以HTML保存。`wordCloud.py`脚本中,借助pyecharts生成词云,如图所示,关键词如&quot;Python&quot;、&quot;词云&quot;等。示例代码创建了词云图实例,添加词频数据,并输出到&quot;wordCloud.html&quot;。
90 1
​「Python大数据」词频数据渲染词云图导出HTML
|
4月前
|
数据采集 Web App开发 存储
Python-数据爬取(爬虫)
【7月更文挑战第24天】
82 7
|
4月前
|
数据采集 机器学习/深度学习 算法
Python-数据爬取(爬虫)
【7月更文挑战第23天】
65 5
|
5月前
|
数据采集 自然语言处理 搜索推荐
python 【包含数据预处理】基于词频生成词云图
这段文本是关于如何使用Python基于词频生成词云图的教程。内容包括:1) 中文分词的必要性,因中文无明显单词边界及语言单位特性;2) 文本预处理步骤,如移除特殊符号、网址、日期等;3) 使用`data_process`函数清除无用字符;4) `getText`函数读取并处理文本为句子数组;5) 使用jieba分词库进行分词和词频统计;6) 示例代码展示了从分词到生成词云的完整流程,最后展示生成的词云图。整个过程旨在从中文文本中提取关键词并可视化。
174 5
python 【包含数据预处理】基于词频生成词云图
|
4月前
|
数据采集 存储 Web App开发
Python-数据爬取(爬虫)
【7月更文挑战第15天】
201 3
|
5月前
|
Web App开发 Python Windows
经验大分享:PYTHON爬取66影视的电影下载链接,有搜索功能
经验大分享:PYTHON爬取66影视的电影下载链接,有搜索功能
139 2
|
5月前
|
数据采集 自然语言处理 数据可视化
拿来及用的Python词云图代码 | wordcloud生成词云详解
词云也叫文字云,是一种可视化的结果呈现,常用在爬虫数据分析中,原理就是统计文本中高频出现的词,过滤掉某些干扰词,将结果生成一张图片,直观的获取数据的重点信息。今天,我们就来学习一下Python生成词云的常用库wordcloud。
|
5月前
|
存储 XML 数据处理
Python网络实践:去哪儿旅游数据爬取指南
Python网络实践:去哪儿旅游数据爬取指南
168 1
下一篇
无影云桌面