【Python爬虫+可视化】解析小破站热门视频,看看播放量为啥会这么高!评论、弹幕主要围绕什么展开

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码

环境使用

  • Python 3.8

  • Pycharm

模块使用

  • import requests

  • import csv

  • import datetime

  • import hashlib

  • import time

一. 数据来源分析

  1. 明确需求

    明确采集网站以及数据

    网址: https://space.bilibili.com/517327498/video?tid=0&pn=2&keyword=&order=pubdate

    数据: 视频基本信息: 标题 播放量 评论 弹幕 上传时间 …

  2. 抓包分析

    打开开发者工具: F12 / 右键点击检查选择network

    点击网页下一页 --> XHR 第一条数据包就是我们需要的内容

    数据包: https://api.bilibili.com/x/space/wbi/arc/search?mid=517327498&ps=30&tid=0&pn=3&keyword=&order=pubdate&platform=web&web_location=1550101&order_avoided=true&w_rid=c9a9f931486961175b1e8138d695680e&wts=1690027894

二. 代码实现步骤 <固定四个大步骤>

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

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

  3. 解析数据, 提取我们需要的数据内容

  4. 保存数据, 把信息数据保存表格文件

获取视频详情数据

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

'''
python资料获取看这里噢!! 小编 V:python10010 好友验证备注:6
即可获取文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
# 模拟浏览器
headers = {# 用户代理 表示浏览器基本身份信息'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}string = f'keyword=&mid=517327498&order=pubdate&order_avoided=true&platform=web&pn=1&ps=30&tid=0&web_location=1550101&wts={int(time.time())}6eff17696695c344b67618ac7b114f92'
# 实例化对象
md5_hash = hashlib.md5()
md5_hash.update(string.encode('utf-8'))
# 请求链接
url = 'https://api.bilibili.com/x/space/wbi/arc/search'
# 请求参数
data = {'mid': '517327498','ps': '30','tid': '0','pn': '1','keyword': '','order': 'pubdate','platform': 'web','web_location': '1550101','order_avoided': 'true','w_rid': md5_hash.hexdigest(),'wts': int(time.time()),
}
# 发送请求 <Response [200]> 响应对象 表示请求成功
response = requests.get(url=url, params=data, headers=headers)

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

  • response.json() 获取响应json数据

    字典数据类型

  • response.text 获取响应文本数据

    网页源代码 字符串数据

  • response.content 获取响应二进制数据数据

    获取图片/视频/音频/特定格式文件

print(response.json())

3.解析数据, 提取我们需要的数据内容

字典数据: 键值对取值

根据冒号左边的内容[键], 提取冒号右边的内容[值]

for index in response.json()['data']['list']['vlist']:# 时间戳 时间节点 --> 上传视频时间点date = index['created']dt = datetime.datetime.fromtimestamp(date)dt_time = dt.strftime('%Y-%m-%d')dit = {'标题': index['title'],'描述': index['description'],'BV号': index['bvid'],'播放量': index['play'],'弹幕': index['video_review'],'评论': index['comment'],'时长': index['length'],'上传时间': dt_time,}print(dit)

4.保存数据, 把信息数据保存表格文件

'''
python资料获取看这里噢!! 小编 V:python10010 好友验证备注:6
即可获取文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
f = open('信息.csv', mode='w', encoding='utf-8', newline='')
csv_writer = csv.DictWriter(f, fieldnames=['标题','描述','BV号','播放量','弹幕','评论','时长','上传时间',
])
csv_writer.writeheader()

数据可视化

导入数据

import pandas as pddf = pd.read_csv('B站视频信息.csv')
df.head()

2020~2023年每月视频总播放平均数

'''
python资料获取看这里噢!! 小编 V:python10010 好友验证备注:6
即可获取文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
from pyecharts import options as opts
from pyecharts.charts import Barc = (Bar().add_xaxis(monthly_avg_plays_2021['月份'].tolist()).add_yaxis("", monthly_avg_plays_2021['播放量'].tolist()).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),title_opts=opts.TitleOpts(title="罗翔视频可视化", subtitle="2020~2023年每月视频总播放平均数"),)
)
c.render_notebook()


每年视频总播放量

df['年份'] = pd.to_datetime(df['上传时间']).dt.strftime('%Y')
yearly_total_plays_all = df.groupby('年份')['播放量'].sum().reset_index()
yearly_total_plays_allc = (Bar().add_xaxis(yearly_total_plays_all['年份'].tolist()).add_yaxis("", yearly_total_plays_all['播放量'].tolist()).set_global_opts(xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(rotate=-15)),title_opts=opts.TitleOpts(title="B站罗翔视频可视化", subtitle="每年视频总播放量"),)
)
c.render_notebook()

弹幕量Top10

'''
python资料获取看这里噢!! 小编 V:python10010 好友验证备注:6
即可获取文章源码/教程/资料/解答等福利,还有不错的视频学习教程和PDF电子书!
'''
top10 = df[['标题', '弹幕']].sort_values('弹幕', ascending=False)[:10]
names = list(top10['标题'])
counts = list(top10['弹幕'])
c = (Bar().add_xaxis(names).add_yaxis("", counts).reversal_axis().set_series_opts(label_opts=opts.LabelOpts(position="right")).set_global_opts(title_opts=opts.TitleOpts(title="弹幕量Top10"))
#     .render("bar_reversal_axis.html")
)
c.render_notebook()

评论量Top10

top10 = df[['标题', '评论']].sort_values('评论', ascending=False)[:10]
names = list(top10['标题'])
counts = list(top10['评论'])
c = (Bar().add_xaxis(names).add_yaxis("", counts).reversal_axis().set_series_opts(label_opts=opts.LabelOpts(position="right")).set_global_opts(title_opts=opts.TitleOpts(title="评论量Top10"))
#     .render("bar_reversal_axis.html")
)
c.render_notebook()

尾语

好了,今天的分享就差不多到这里了!

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇 更多源码、资料、素材、解答、交流 皆点击下方名片获取呀👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/124943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV官方教程中文版 —— Hough 圆环变换

OpenCV官方教程中文版 —— Hough 圆环变换 前言Hough 圆环变换 前言 目标 • 学习使用霍夫变换在图像中找圆形&#xff08;环&#xff09; • 学习函数&#xff1a;cv2.HoughCircles() Hough 圆环变换 opencv_logo.png&#xff1a; # -*- coding: utf-8 -*- import cv2 …

Python 自动化详解(pyautogui)

文章目录 1 概述1.1 第三方库&#xff1a;pyautogui1.2 坐标说明 2 操作对象2.1 鼠标2.1.1 定位2.1.2 移动2.1.3 拖动2.1.4 滚动2.1.5 点击 2.2 键盘2.2.1 输入2.2.2 按键2.2.3 快捷键 2.3 屏幕2.3.1 截图2.3.2 分辨率 2.4 信息提示2.4.1 提示框2.4.2 选择框2.4.3 密码输入2.4.…

jsp 网上订餐Myeclipse开发mysql数据库web结构java编程计算机网页项目

选题目的 本设计课题为网上订餐系统设计与实现&#xff0c;提供无纸化点餐、支付&#xff0c;实现点餐快捷&#xff0c;方便管理。餐厅电子化是目前的潮流和趋势&#xff0c;大多数企业都将公司内部运营流程电子化。网上订餐管理系统应运而生&#xff0c;能够有效提高公司的管…

记一次老商家端应用内存突然飚高原因分析 | 京东物流技术团队

一、排查过程 问题发现是因为当时接到了内存UMP报警信息&#xff0c;如下&#xff1a; 通过查看PFinder发现内存一直在增长&#xff0c;没有停止迹象&#xff0c;触发fullGC也并没有下降趋势&#xff1a; 当机立断&#xff0c;先立即去NP上摘除了此台机器流量&#xff0c;然后…

发布一站式反电诈工具,合合信息商业大数据技术助力银行守护群众“钱袋子”

近期&#xff0c;电影《孤注一掷》在社交媒体上引起了广泛的讨论&#xff0c;社会各界对于电信网络诈骗案件的关注度日益提升。真实世界中的电诈涉及金额之大、团伙成员之多&#xff0c;往往比电影更甚。为此&#xff0c;国家不断加大对电信诈骗的打击力度&#xff0c;出台《反…

低功耗设计-ir drop的signoff corner怎么选择?

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 相关文章链接: Multi Voltage Flow笔记 有几个方向&#xff0c;看公司需求吧 1.功耗最差的&#xff1b; 2.tt的&#xff08;tt85 是比较接近芯片真实工作情况的&#xff09…

C# 如何反射获取常量值

首先&#xff0c;常量是一个字段&#xff0c;所以需要从字段中获取该值。 但是需要传入的BindingFlags是什么&#xff0c;与其盲猜&#xff0c;不如直接反射所有字段值&#xff0c;查看其中的常量有哪些特性和bool值来判断。 ...static void Main(string[] args){var type typ…

【javaweb】学习日记Day13 - AOP 事务管理 切入点 连接点

目录 一、完善解散部门功能 二、spring 事务 &#xff08;1&#xff09;Transactional 事务管理 ① rollbackFor 控制异常类型 ② propagation 事务传播控制 1、定义解散部门操作日记 三、AOP基础 1、概述 2、快速入门 &#xff08;1&#xff09;案例&#xff1a;统…

RabbitMQ初入门

1、RabbitMQ是什么 RabbitMQ是“实现了高级消息队列协议&#xff08;AMQP&#xff09;的开源消息代理软件&#xff08;亦称面向消息的中间件&#xff09;。RabbitMQ服务器是用Erlang语言编写的&#xff0c;而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均…

STM32的bootloader程序(通过串口更新STM32应用程序)

1 什么是bootloader&#xff1f; Bootloader&#xff0c;也被称为引导加载程序&#xff0c;是操作系统启动过程中的一个重要组成部分。它是存储在非易失性存储器中的一段小程序&#xff0c;负责在操作系统内核运行之前加载并启动一些必要的系统组件。 当计算机开机后&#xff0…

ICC2: 如何在显示GUI操作产生的命令

我正在「拾陆楼」和朋友们讨论有趣的话题&#xff0c;你⼀起来吧&#xff1f; 拾陆楼知识星球入口 ICC2&#xff1a;自定义快捷键和菜单 VIEW -> Perference -> Global Settings 把display commands in logging console 下面几个都勾上即可。

css:button实现el-radio效果

先看最终效果&#xff1a; ​​​ 思路&#xff1a; 一、 首先准备好按钮内容&#xff1a;const a [one,two,three] 将按钮循环展示出来&#xff0c;并设置一些样式&#xff0c;将按钮背景透明&#xff1a; <button v-for"(item,index) in a" :key"in…

实战之巧用header头

案例&#xff1a; 遇到过三次 一次是更改accept&#xff0c;获取到tomcat的绝对路径&#xff0c;结合其他漏洞获取到shell。 一次是更改accept&#xff0c;越权获取到管理员的MD5加密&#xff0c;最后接管超管权限。 一次是更改accept&#xff0c;结合参数获取到key。 这里以越…

如何选购适合自己的内衣洗衣机?性价比高内衣洗衣机推荐

内衣洗衣机&#xff0c;在几年前或许是个新事物&#xff0c;但近两年却是成为了很普遍的家电产品&#xff0c;由于近几年内衣洗衣机需求量的增加&#xff0c;我们在商场的电子产品区都能见到它&#xff0c;就像普通的家庭洗衣机那样&#xff0c;直接摆在展台上销售&#xff0c;…

VPS是什么?详解亚马逊云科技Amazon Lightsail(VPS)虚拟专用服务器

2006年&#xff0c;南非开普敦&#xff0c;亚马逊推出了WBS&#xff0c;以网络服务的形式向企业提供基础的IT服务。亚马逊云科技的一小步&#xff0c;在无数技术更迭&#xff0c;天才设计师和程序员的努力与基础设施建设的完善之下成为了人类科技进展的一大步。 亚马逊云科技可…

【Spring Boot 源码学习】RedisAutoConfiguration 详解

Spring Boot 源码学习系列 RedisAutoConfiguration 详解 引言往期内容主要内容1. Spring Data Redis2. RedisAutoConfiguration2.1 加载自动配置组件2.2 过滤自动配置组件2.2.1 涉及注解2.2.2 redisTemplate 方法2.2.3 stringRedisTemplate 方法 总结 引言 上篇博文&#xff0…

携手云栖,共望未来

&#x1f4a8;随着信息技术的迅猛发展&#xff0c;云计算已成为推动数字经济发展的重要驱动力之一。在这个领域中&#xff0c;云栖大会无疑是中国乃至全球最重要的盛会之一。云栖大会的历史可以追溯到2009年的地方网站峰会&#xff0c;随着时间的推移&#xff0c;它逐渐演变为阿…

如何在Instagram和kol展开合作

网红营销已经演变成一个由品牌、MCN机构、红人和消费者组成的复杂生态系统&#xff0c;并在某种程度上重新定义了当今社交媒体时代营销和广告的本质。在这个情况下&#xff0c;品牌找红人进行营销推广已经成为大势&#xff0c;而最能体现网红营销发展的莫过于Instagram这个平台…

数据结构(三):栈及面试常考的算法

一、栈介绍 1、定义 栈也是一种数据呈线性排列的数据结构&#xff0c;不过在这种结构中&#xff0c;我们只能访问最新添加的数据。从栈顶放入元素的操作叫入栈&#xff0c;取出元素叫出栈。 2、优缺点及使用场景 优点&#xff1a;高效的操作、简单易用、空间效率高等 缺点&…

【SpringSecurity】快速入门—通俗易懂

目录 1.导入依赖 2.继承WebSecurityConfigurerAdapter 3.实现UserDetailsService 4.记住我 5.用户注销 6.CSRF理解 7.注解功能 7.1Secured 7.2PreAuthorized 7.3PostAuthorized 7.4PostFilter 7.5ZPreFilter 8.原理解析 1.导入依赖 首先&#xff0c;在pom.xml文…