文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

20亿票房但不好看?Python分析《孤注一掷》豆瓣评论数据

2023-09-01 16:46

关注

环境使用

所需模块

import parsel >>> pip install parselimport requests >>> pip install requestsimport csv

一. 数据来源分析:

  1. 明确需求:
https://movie.douban.com/subject/35267208/comments?limit=20&status=P&sort=new_score
  1. 抓包分析相关数据来源
    通过浏览器自带开发者工具进行抓包分析 <重点>
https://movie.douban.com/subject/35267208/comments?limit=20&status=P&sort=new_score

二. 代码实现步骤: 基本四大步骤 --> 发送请求,获取数据,解析数据,保存数据

  1. 发送请求, 模拟浏览器对于url地址发送请求
https://movie.douban.com/subject/35267208/comments?limit=20&status=P&sort=new_score
  1. 获取数据, 获取服务器返回响应数据
    开发者工具 --> response
  2. 解析数据, 提取我们想要的数据内容
    评论相关数据
  3. 保存数据, 把数据内容保存表格文件里面

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

返回表示请求成功

# 请求链接url = f'https://movie.douban.com/subject/35267224/comments?start=20&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字符串数据 , 转成可解析对象

提取具体数据内容
.comment-info a --> 定位class类名为comment-info下面a标签
a::text --> 提取a标签里面文本
get() --> 获取第一个标签内容
attr() --> 提取属性

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,    }    # 写入数据    print(name, rating, date, area, votes, short)

保存数据

data.csv --> 文件名
mode=a --> 保存方式 追加保存
encoding=‘utf-8’ --> 编码格式
newline --> 换行符
f --> 文件对象

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 wordcloud

读取数据

df = pd.read_csv('data10.csv')df.head()

推荐分布

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()

地区分布

import pyecharts.options as optsfrom pyecharts.charts import Piedata_pair = [list(z) for z in zip(area_type, area_num)]data_pair.sort(key=lambda x: x[1])d = (    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)"), ))d.render_notebook()

适合练手的25个Python案例源码分享,总有一个你想要的

👇问题解答 · 源码获取 · 技术交流 · 抱团学习请联系👇

来源地址:https://blog.csdn.net/m0_48405781/article/details/132308128

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯