春节电影听巳月说都还可以,我不信,我觉得还是要看看看过的观众怎么说,于是我点开了流浪地球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字符串数据 , 转成可解析对象

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=[    '昵称',    '推荐',    '时间',    '地区',    '有用',    '评论',])

写入表头

csv_writer.writeheader()

可视化词云图代码展示

import pandas as pdimport jiebaimport wordclouddf = pd.read_csv('data10.csv')df.head()info_list = df['评论'].to_list()string = ' '.join(jieba.lcut(''.join(info_list)))stringwc = 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 Piedata_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} 
{b}: {c} ({d}%)
" ), label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.3)"), ))c.render_notebook()
效果展示

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