打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用Python获取春节档电影影评,制作可视化词云图

春节电影听巳月说都还可以,我不信,我觉得还是要看看看过的观众怎么说,于是我点开了流浪地球2 …

看起来好像不错的样子,8.2的评分,三十多亿的票房

就是这评价也太多了,那我们今天就把网友对它的评论获取下来,做成可视化词云图看看大家讨论最多的是什么。

准备工作

使用的环境

Python 3.8 解释器Pycharm 编辑器

需要手动安装的模块

parsel 数据解析模块requests 数据请求模块

在cmd直接pip安装即可

采集数据部分

基本思路流程

一、数据来源分析

1、明确需求()

  • 采集的网站是什么?

  • 采集的数据是什么?

2、抓包分析相关数据来源

通过浏览器自带开发者工具进行抓包分析

  • 打开开发者工具:  F12 或者 鼠标右键点击检查选择network

  • 刷新网页: 让本网页的数据内容重新加载一遍

  • 关键字搜索: 通过关键字<要的数据>, 搜索查询相对应的数据包

二. 代码实现步骤

基本四大步骤

  1. 发送请求:模拟浏览器对于url地址发送请求

  2. 获取数据:获取服务器返回响应数据
    开发者工具 --> response

  3. 解析数据:提取我们想要的数据内容
    评论相关数据

  4. 保存数据:把数据内容保存表格文件里面

代码实战

发送请求,模拟浏览器对于url地址发送请求

for page in range(0, 200, 20): # 请求链接 url = f'https://movie.douban.com/subject/35267208/comments?start={page}&limit=20&status=P&sort=new_score' # 伪装模拟 headers = { # User-Agent 用户代理, 表示浏览器基本身份标识 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36' } # 发送请求 response = requests.get(url=url, headers=headers) print(response)

获取数据, 获取服务器返回响应数据。

print(response.text)

解析数据,提取我们想要的数据内容。

把获取下来html字符串数据 <response.text>, 转成可解析对象

selector = parsel.Selector(response.text)  # 第一次提取, 所有div标签divs = selector.css('div.comment-item')# for循环遍历, 把列表里面元素一个一个提取出来for div in divs:
name = div.css('.comment-info a::text').get() # 昵称 rating = div.css('.rating::attr(title)').get() # 推荐 date = div.css('.comment-time::attr(title)').get() # 时间 area = div.css('.comment-location::text').get() # 地区 votes = div.css('.votes::text').get() # 有用 short = div.css('.short::text').get().replace('\n', '') # 评论 # 数据存字典里面 dit = { '昵称': name, '推荐': rating, '时间': date, '地区': area, '有用': votes, '评论': short, }

写入数据

csv_writer.writerow(dit)print(name, rating, date, area, votes, short)

创建文件对象

f = open('data10.csv', mode='a', encoding='utf-8-sig', newline='')csv_writer = csv.DictWriter(f, fieldnames=[ '昵称', '推荐', '时间', '地区', '有用', '评论',])

写入表头

csv_writer.writeheader()

代码仅做参考,完整代码、详细视频讲解直接在这个Q群 708525271 领取就好了


可视化词云图

代码展示

import pandas as pdimport jiebaimport wordcloud
df = pd.read_csv('data10.csv')df.head()
info_list = df['评论'].to_list()string = ' '.join(jieba.lcut(''.join(info_list)))string
wc = wordcloud.WordCloud( width=1000, height=700, background_color='white', font_path='msyh.ttc', scale=15,)wc.generate(string)wc.to_file('1.png')
evaluate_num = df['推荐'].value_counts().to_list()evaluate_type = df['推荐'].value_counts().index.to_list()
import pyecharts.options as optsfrom pyecharts.charts import Pie
data_pair = [list(z) for z in zip(evaluate_type, evaluate_num)]data_pair.sort(key=lambda x: x[1])
c = ( Pie(init_opts=opts.InitOpts(bg_color='#2c343c')) .add( series_name='豆瓣影评', data_pair=data_pair, rosetype='radius', radius='55%', center=['50%', '50%'], label_opts=opts.LabelOpts(is_show=False, position='center'), ) .set_global_opts( title_opts=opts.TitleOpts( title='推荐分布', pos_left='center', pos_top='20', title_textstyle_opts=opts.TextStyleOpts(color='#fff'), ), legend_opts=opts.LegendOpts(is_show=False), ) .set_series_opts( tooltip_opts=opts.TooltipOpts( trigger='item', formatter='{a} <br/>{b}: {c} ({d}%)' ), label_opts=opts.LabelOpts(color='rgba(255, 255, 255, 0.3)'), ))c.render_notebook()


效果展示

词云图

饼状图


好了今天的分享就到这,大家快去试试吧,下次见!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python分析并绘制可视化动态地图,实时查询全球疫情数据(11月最新...)
分析20万条弹幕告诉你,8.9分的高分剧《隐秘的角落》到底好看在哪儿?
以腾讯5000部电影为例,告诉你Python数据分析该怎么做
【爬虫系列】Python一键获取股票数据,搭配pyecharts可视化展示
Python爬虫+数据分析:分析一下懂车帝现阶段哪款车值得我们去冲
Python爬取股票信息,并可视化数据的示例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服