|
春节电影听巳月说都还可以,我不信,我觉得还是要看看看过的观众怎么说,于是我点开了流浪地球2 …
看起来好像不错的样子,8.2的评分,三十多亿的票房
就是这评价也太多了,那我们今天就把网友对它的评论获取下来,做成可视化词云图看看大家讨论最多的是什么。
准备工作
使用的环境- Python 3.8 解释器
- Pycharm 编辑器
复制代码
需要手动安装的模块- parsel 数据解析模块
- requests 数据请求模块
复制代码
在cmd直接pip安装即可
采集数据部分
基本思路流程
一、数据来源分析
1、明确需求()
2、抓包分析相关数据来源
通过浏览器自带开发者工具进行抓包分析
- 打开开发者工具: F12 或者 鼠标右键点击检查选择network
- 刷新网页: 让本网页的数据内容重新加载一遍
- 关键字搜索: 通过关键字, 搜索查询相对应的数据包
二. 代码实现步骤
基本四大步骤
- 发送请求:模拟浏览器对于url地址发送请求
- 获取数据:获取服务器返回响应数据
开发者工具 --> response
- 解析数据:提取我们想要的数据内容
评论相关数据
- 保存数据:把数据内容保存表格文件里面
代码实战
发送请求,模拟浏览器对于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)
复制代码
获取数据, 获取服务器返回响应数据。
解析数据,提取我们想要的数据内容。
把获取下来html字符串数据 , 转成可解析对象- 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)
- # 代码仅做参考,完整代码、详细视频讲解在这个q裙 708525271 自取即可
复制代码
创建文件对象- f = open('data10.csv', mode='a', encoding='utf-8-sig', newline='')
- csv_writer = csv.DictWriter(f, fieldnames=[
- '昵称',
- '推荐',
- '时间',
- '地区',
- '有用',
- '评论',
- ])
复制代码
写入表头可视化词云图
代码展示
- import pandas as pd
- import jieba
- import 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 opts
- from 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()<br>
复制代码
好了今天的分享就到这,大家快去试试吧,下次见!
来源:https://www.cnblogs.com/hahaa/p/17103013.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|