【Python3爬虫】你会怎么评价复仇者联盟4?

简介: 【Python3爬虫】你会怎么评价复仇者联盟4?一、写在前面最近复仇者联盟4正在热映中,很多人都去电影院观看了电影,那么对于这部电影,看过的人都是怎么评价的呢?这时候爬虫就可以派上用场了!二、主要思路首先打开豆瓣电影,然后进入复仇者联盟4的详情页面:https://movie.

【Python3爬虫】你会怎么评价复仇者联盟4?
一、写在前面
最近复仇者联盟4正在热映中,很多人都去电影院观看了电影,那么对于这部电影,看过的人都是怎么评价的呢?这时候爬虫就可以派上用场了!

二、主要思路
首先打开豆瓣电影,然后进入复仇者联盟4的详情页面:https://movie.douban.com/subject/26100958/,下拉页面就可以找到这部电影的短评了:

虽然它显示的短评有85751条,但是我们却没有办法获取所有的短评,在未登录的情况下只能看到200条短评,登录之后也只能得到500条短评,可是只有500条怎么够呢?所以我们得想办法得到尽量多的短评,思路为分别选择好评、一般、短评和最新,不过最新的短评只显示100条,所以我们能爬取的短评数量就是1600条。

当我们把短评爬取下来之后,可以先把短评数据保存到数据库中,然后再对这些短评进行分析。这里我选择用MongoDB数据库来保存数据,然后使用SnowNLP进行情感分析,再使用jieba分词和wordcloud生成词云。

三、主要代码
1.模拟登录

这一步是很重要的,我们需要带着登录之后的Cookie去发送请求才能得到数据,当然也可以打开浏览器登录之后复制Cookie,具体怎么做看个人喜好。登录豆瓣的url为:https://accounts.douban.com/passport/login?,抓一下包就知道怎么模拟登录了,并没有什么难度。代码如下:

复制代码
1 def login(self):
2 """
3 模拟登录
4 :return:
5 """
6 url = "https://accounts.douban.com/j/mobile/login/basic"
7 data = {
8 "ck": "",
9 "name": self.username,
10 "password": self.password,
11 "remember": "false",
12 "ticket": ""
13 }
14 res = self.session.post(url, headers=self.headers, data=data)
15 print("登录成功!欢迎用户:", res.json()"payload"["name"])
复制代码

2.情感分析

SnowNLP是python中用来处理文本内容的,可以用来分词、标注、文本情感分析等,情感分析是简单的将文本分为两类,积极和消极,返回值为情绪的概率,越接近1为积极,接近0为消极。代码如下:

复制代码
1 def analyze(self):
2 """
3 情感分析
4 :return:
5 """
6 result = self.col.find()
7 comments = []
8 for i in result:
9 comments.append(i["评论"])
10 sentiments_list = []
11 for i in comments:
12 s = SnowNLP(i)
13 sentiments_list.append(s.sentiments)
14 plt.hist(sentiments_list, bins=np.arange(0, 1, 0.01), facecolor="g")
15 plt.xlabel('Sentiments Probability')
16 plt.ylabel('Quantity')
17 plt.title('Analysis of Sentiments')
18 plt.savefig("Sentiments.png")
19 print("情感分析完毕,生成图片Sentiments.png")
复制代码

3.生成词云

首先要用jieba对评论进行分词,然后我们要设置一些停用词,比如标点符号、“你”、“我”、“一部”、“电影”等词语,最后使用wordcloud模块生成词云图片。代码如下:

复制代码
1 def generate(self):
2 """
3 生成词云
4 :return:
5 """
6 result = self.col.find()
7 comments = []
8 for i in result:
9 comments.append(i["评论"])
10 text = jieba.cut("n".join(comments))
11
12 # 文本清洗,去除标点符号和长度为1的词
13 with open("stopwords.txt", "r", encoding='utf-8') as f:
14 stopwords = set(f.read().split("n"))
15 stopwords.update({"一部", "一场", "电影", "小时", "分钟"})
16 # 使用图片
17 mask = np.array(Image.open("Avengers.jpg"))
18
19 # 生成词云
20 wc = WordCloud(
21 mask=mask,
22 stopwords=stopwords,
23 font_path="font.ttf",
24 max_font_size=200,
25 min_font_size=20,
26 max_words=100,
27 width=1200,
28 height=800
29 )
30 wc.generate(' '.join(text))
31 wc.to_file('Avengers.png')
32 print("词云已生成,保存为Avengers.png。")
复制代码

四、运行结果
首先是进入MongoDB数据库查看数据:

然后是使用SnowNLP进行情感分析得到的结果,可见很多人都是很喜欢复仇者联盟4的:

最后是生成的词云:

那么,对于看了电影的你,你会怎么评价这部电影呢?如果你没有看过,会不会想要买一张电影票去看看呢?

完整代码已上传到GitHub!
原文地址https://www.cnblogs.com/TM0831/p/10771564.html

相关文章
|
6月前
|
数据采集 Web App开发 数据安全/隐私保护
实战:Python爬虫如何模拟登录与维持会话状态
实战:Python爬虫如何模拟登录与维持会话状态
|
7月前
|
数据采集 Web App开发 自然语言处理
新闻热点一目了然:Python爬虫数据可视化
新闻热点一目了然:Python爬虫数据可视化
|
8月前
|
数据采集 数据挖掘 测试技术
Go与Python爬虫实战对比:从开发效率到性能瓶颈的深度解析
本文对比了Python与Go在爬虫开发中的特点。Python凭借Scrapy等框架在开发效率和易用性上占优,适合快速开发与中小型项目;而Go凭借高并发和高性能优势,适用于大规模、长期运行的爬虫服务。文章通过代码示例和性能测试,分析了两者在并发能力、错误处理、部署维护等方面的差异,并探讨了未来融合发展的趋势。
794 0
|
6月前
|
数据采集 监控 数据库
Python异步编程实战:爬虫案例
🌟 蒋星熠Jaxonic,代码为舟的星际旅人。从回调地狱到async/await协程天堂,亲历Python异步编程演进。分享高性能爬虫、数据库异步操作、限流监控等实战经验,助你驾驭并发,在二进制星河中谱写极客诗篇。
Python异步编程实战:爬虫案例
|
7月前
|
数据采集 存储 XML
Python爬虫技术:从基础到实战的完整教程
最后强调: 父母法律法规限制下进行网络抓取活动; 不得侵犯他人版权隐私利益; 同时也要注意个人安全防止泄露敏感信息.
950 19
|
6月前
|
数据采集 存储 JSON
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
Python爬虫常见陷阱:Ajax动态生成内容的URL去重与数据拼接
|
6月前
|
数据采集 存储 JavaScript
解析Python爬虫中的Cookies和Session管理
Cookies与Session是Python爬虫中实现状态保持的核心。Cookies由服务器发送、客户端存储,用于标识用户;Session则通过唯一ID在服务端记录会话信息。二者协同实现登录模拟与数据持久化。
|
7月前
|
数据采集 存储 Web App开发
处理Cookie和Session:让Python爬虫保持连贯的"身份"
处理Cookie和Session:让Python爬虫保持连贯的"身份"
|
8月前
|
数据采集 存储 JSON
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
|
7月前
|
数据采集 Web App开发 前端开发
处理动态Token:Python爬虫应对AJAX授权请求的策略
处理动态Token:Python爬虫应对AJAX授权请求的策略

推荐镜像

更多