点击上方“蓝字”,感谢关注!

这段时间,《哪吒》爆火。

于是,就想看看,关于《哪吒》的评价。

为什么选择豆瓣?

质量和口碑还不错吧。

可是,折腾一波之后,发现了这个。

豆瓣从2017.10月开始全面禁止爬取数据,仅仅开放500条数据,白天1分钟最多可以爬取40次,晚上一分钟可爬取60次数,超过此次数则会封禁IP地址。

登录状态下,按网页按钮点击“后页”,参数“start”最多为480,也就是20*25=500条;非登录状态下,最多为200条。

行吧,500条就500条吧,Let's go。

整个过程分为两部分:

1 获取豆瓣短评数据

2 词云可视化

1 获取短评数据


1)爬虫原理简单分析

2)需求分析

好了,爬虫的基本思路我们已经了解了。

现在,开始干活了。

首先,我们打开短评的url地址:

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

我们想要获取以下内容:

-用户名称

-评分

-短评内容

3)URL解析

要想获取数据,我们先来分析一下URL。

4)发送请求,获取响应

根据url,我们可以发送请求了,注意携带cookie

先来爬一页,看看结果。

import requestsheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0".3809.100 Safari/537.36','Cookie': '你的cookie'}for i in range(0, 1):url = 'https://movie.douban.com/subject/26794435/comments?start={}&limit=20&sort=new_s' \'core&status=P'.format(i*10)reponse = requests.get(url, headers=headers)print(reponse.content.decode())

5)定位信息

从图中,我们可以看到对应的标签和属性。

利用xpath,我们可以很轻松地定位到我们想要的信息。推荐《6节课学会python爬虫》,里边讲解得很好。


先定位到,每一页的“20个短评”对应的xml位置。

再遍历,每一个短评内容。

结合代码来看一下。

item_list = []html = etree.HTML(reponse.content.decode())
div_list = html.xpath('//*[@id="comments"]//div[@class="comment"]')# 定位大块
for div in div_list:# 遍历每一条信息item = {}# ./ 注意从当前节点,向下获取 # 用户姓名/用户主页的url/短评内容/评分 item['user_name'] = div.xpath('.//span[@class="comment-info"]/a/text()')[0]item['user_url'] = div.xpath('.//span[@class="comment-info"]/a/@href')[0]item['content'] = div.xpath('.//span[@class="short"]/text()')[0].replace('\n', '') item['score'] = div.xpath('.//span[@class="comment-info"]/span/@title')[0]item_list.append(item)print(item)

5)保存结果


上边,已经把每一条数据,整理成一个字典。然后,把字典放在一个大的列表里。

这样,我们可以很轻松的把数据导出为csv文件。

# 把数据存成csv文件
import pandas as pd
df = pd.DataFrame(item_list)# 保证不乱码
df.to_csv('哪吒短评数据.csv', encoding='utf_8_sig')

2 词云可视化

1)jieba分词

参考博客:

https://blog.csdn.net/dnxbjyj/article/details/72854460

结巴分词 是针对字符串进行处理的,分词后 会返回一个列表或者迭代器,你需要用 字符串的join方法,把词语列表 重新拼接成一个字符串,然后把内容给到 wordcloud 生成词云。

import pandas as pd
import jieba# 读取数据
df = pd.read_csv('哪吒短评数据.csv', encoding='utf-8-sig')text = ''
# 获得wordcloud 需要的 文本格式
for line in df['content']:text += ' '.join(jieba.cut(str(line), cut_all=False))  # 结巴分词

2)词云展示

创建一个词云对象,添加一些基本设置。比如,中文字体,背景图片,停用词等等。然后,根据上文中的 text,生成词云。

我们可以看一下,文本中最高频的50个词。并把词云保存为本地图片。

from wordcloud import WordCloud
import matplotlib.pyplot as plt# 停用词
words = pd.read_csv('stopwords_zh.txt', error_bad_lines=False, encoding='gbk', engine ='python', names=['stopword'])stopwords = set('')
stopwords.update(words['stopword'])backgroud_Image = plt.imread('豆瓣.jpg')  # 背景图# 词云的一些参数设置
wc = WordCloud(background_color='white',mask=backgroud_Image,font_path='SourceHanSerifCN-Medium.otf',max_words=200,max_font_size=200,min_font_size=8,random_state=50,stopwords=stopwords)# print(text)# 生成词云
word_cloud = wc.generate_from_text(text)# 看看词频高的有哪些
process_word = WordCloud.process_text(wc, text)
sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True)
print(sort[:50])plt.imshow(word_cloud)
plt.axis('off')wc.to_file('结果.jpg')
print('生成词云成功!')

看一下高频词的结果。

[('哪吒', 24), ('电影', 9), ('这部', 8), ('故事', 8),
('动画', 6), ('国产 动画', 6), ('不由', 5), ('国漫', 5),
('想象力', 5), ('国产', 5), ('人物', 5), ('我命', 4), ('一部', 4),
('中国', 4), ('观众', 4), ('更是', 4), ('角色', 3), ('成见', 3),('笑料', 3), ('暑期', 3), ('不错', 3), ('有人', 3), ('神话', 3),
('形式', 3), ('良心', 3), ('热血', 3), ('动画电影', 3), ('成熟', 3),
('优秀', 3), ('白蛇', 3), ('喜剧', 3), ('改编', 3), ('内核', 3),
('最佳', 3), ('饱满', 3), ('作品', 3), ('高潮', 3), ('场面', 3),
('大圣 归来', 3), ('缺陷', 2), ('本片', 2), ('打破', 2),
('偏见', 2), ('政治', 2), ('正确', 2), ('妖怪', 2),
('烂片', 2), ('社稷', 2), ('震撼', 2), ('封神', 2)]

看一下词云。

总结来了


我把文章中的一些重要的内容,总结在了下面的一张图里,方便大家保存、查阅。


我把源文件及相关数据都打包好了,后台回复【哪吒】,一键提取。

这个小例子,挺基础的,适合入门的同学,但知识点也挺多的。

推荐阅读:(点击下方标题即可跳转)没看完这11 条,别说你精通 Python 装饰器
张飞比关羽还能打?一位酷爱三国的日本程序员,用NLP分析了武将们的战斗力

⬆️欢迎长按图片识别二维码关注~

爬取《哪吒》豆瓣短评,我得到了什么?相关推荐

  1. java 爬取评论,Java基于WebMagic爬取某豆瓣电影评论的实现

    目的 搭建爬虫平台,爬取某豆瓣电影的评论信息. 准备 webmagic是一个开源的Java垂直爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发.webmagic的核心非常简单,但是覆盖 ...

  2. 爬取了豆瓣11W+网页,获取了5W+有效书籍信息

    爬取了豆瓣11W+网页,获取了5W+有效书籍信息 标签:爬虫 Python 之前写了一篇博文:利用爬虫获取豆瓣上可能喜欢的书籍,这篇博文中的爬虫可以以给定的url为原点,慢慢的向外扩散爬取书籍信息,可 ...

  3. 我用Python爬取了豆瓣影评,成功后居然发现了一个惊人的秘密.........

    大家好,我是IT界搬运喵. 相信大家在工作无聊时,总想掏出手机,看看电影刷刷视频.更加是夜深人静的时候,总是按耐不住自己的内心想要去看看小电影,当然我可没有开车.我说的是好电影,豆瓣高分电影,自己想歪 ...

  4. 哪吒票房逼近40亿,用python爬取哪吒短评分析

    目录 前言 分析 具体步骤 登录 爬取与存储 可视化分析 结语 前言 暑期档电影惨淡,但随着哪吒爆红开拓了新局面.这也是国产动画的首次爆红.在哪吒刚出,笔者以为最多10亿就算不错的了.没想过仅过了几天 ...

  5. python画哪吒_哪吒票房逼近30亿,python爬取哪吒短评分析

    目录 前言 分析 具体步骤 登录 爬取与存储 可视化分析 结语 前言 暑期档电影惨淡,但随着哪吒爆红开拓了新局面.这也是国产动画的首次爆红.在哪吒刚出,笔者以为最多10亿就算不错的了.没想过仅过了几天 ...

  6. python爬取豆瓣影评理论依据_我用Python爬取了豆瓣的影评

    使用Python爬取豆瓣的影评,比爬取网易云简单,因为不需要设置特定的headers,关于网易云说几句,很难爬取,对请求头有着严格的要求,前几年那会还好些. 爬取结果分为:用户名,评价的星级,评论的内 ...

  7. Python——爬取目标豆瓣图书TOP250

    目标网址:https://book.douban.com/top250?start=0 参考资料: Requests:               http://docs.python-request ...

  8. python爬豆瓣top250书籍_Python——爬取目标豆瓣图书TOP250

    目标网址:https://book.douban.com/top250?start=0 导入模块: import requests from bs4 import BeautifulSoup 添加he ...

  9. 剧荒不慌 | 手把手教你爬取+DIY豆瓣电影新榜单

    作者 | 吹牛Z 来源 | 数据不吹牛(ID:shujubuchuiniu) 本文以豆瓣电影(非TOP250)为例,从数据爬取.清洗与分析三个维度入手,详解和还原数据爬取到分析的全链路.阅读全文大概需 ...

  10. python爬虫影评_Python爬虫-爬取杀破狼豆瓣影评并小作分析~

    也是前几天看到一个公众号推了一篇文章,是爬取战狼的影评.今天自己也来试一下 我选择爬的是<杀破狼> image.png 然后就是打开短评页面,可以看到comment-item,这就是影评了 ...

最新文章

  1. 新网杯top1方案:手把手构建中文语音合成模型!
  2. static 函数和普通函数
  3. USB相关结构体之struct usb_device
  4. python中列表用某个数字出现的次数_Python实现统计给定列表中指定数字出现次数的方法...
  5. 计算机科学术语,计算机科学中的术语(2)
  6. 【C++】 为什么C++空类占一个字节
  7. 原来还有dynamic这东西。
  8. 唯一标识计算机的位置目录与文件的是,计算机应用基础 7.doc
  9. python控制手机自动刷新闻_python +adb控制手机自动化签到
  10. 11产品经理要懂的-人性行为之善良友好的本质
  11. 【转】Freeglut 2.6.0 + VS2008下配置方法
  12. 【iOS越狱开发】如何将应用打包成.ipa文件
  13. vb是计算机语言吗,vb是什么语言?
  14. 犀牛脚本插件-python-vb-编辑使用方式-rhino脚本插件
  15. 库存成本计算方法简介
  16. Java的图片处理工具类(放缩、切割、水印等)
  17. 可编程并行通信接口8255A
  18. Elasticsearch(es) 查询语句语法详解
  19. 1#操作系统#响应比
  20. python引用类全局变量_调用全局变量时无法解析的引用? - python

热门文章

  1. 公司的一道考试题算法分析——大数据量整数排序
  2. java beans_java beans的概念及应用?
  3. logon oracle 密码 用户名_oracle用户名密码及用户被锁等问题
  4. Linux给用户设置全局变量
  5. 电视安卓和linux系统软件,安卓和LINUX系统哪种更适合网络电视机顶盒?
  6. python编程神器下载_Python编程神器 -程序员必备开发手册
  7. python删除空值多于50%的行_删除Pandas中“空”值超过60%的列
  8. 【若依(ruoyi)】解决同一Tomcat下两个/多个若依(ruoyi)项目部署报错
  9. 【sprinb-boot】配置和lib分离打包
  10. Spring Cloud:connect time out