最新要闻
- 上海一车主至少5次倒车撞击后车:后车特斯拉全程不动 网友吐槽
- 热门:《三体》动画口碑直降!豆瓣跌破6分 网友发现人脸模型重复利用
- 讯息:5MHz处理器+128MB内存:成功运行Win7旗舰版
- 天天百事通!2022年度七大叫好又叫座游戏 看完手痒别怪我
- 观察:苹果中国开启新年福利:iPhone 13等降价优惠千元!
- 韩国报告首例“食脑虫”病例:一天即死亡、不会人传人
- 快报:葛优母亲施文心去世:享年94岁 从事电影文学编辑30年
- 【环球新视野】《西游记之七十二变》终极预告:孙悟空、牛魔王一起学法术
- 每日讯息!EPIC喜加一:国产之光3A游戏《暗影火炬城》免费送 省了108元
- RTX 4070 Ti跑分偷跑:怎么灭掉了RTX 3090 Ti!
- 每日视讯:Wi-Fi 6路由杀到169元 荣耀路由X4 Pro发布:三个千兆网口
- 世界新消息丨豆瓣2022年度电影榜单出炉:《阿凡达2》入榜
- 环球微资讯!一群环保人士 为何想限制游戏发展?
- 热资讯!首发199元 荣耀手环7发布:1.47英寸大屏 支持全天候血氧监测
- 韩国人造肉需求激增:近一半韩国年轻人买过吃过人造肉
- 02年小伙3年打6份工买车 正能量感染网友:送过外卖、做过服务员等
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
【环球快播报】【爬虫+数据清洗+可视化分析】舆情分析哔哩哔哩"阳了"的评论
- 一、背景介绍
- 二、爬虫代码
- 2.1 展示爬取结果
- 2.2 爬虫代码讲解
- 三、可视化代码
- 3.1 读取数据
- 3.2 数据清洗
- 3.3 可视化
- 3.3.1 IP属地分析-柱形图
- 3.3.2 评论时间分析-折线图
- 3.3.3 点赞数分布-直方图
- 3.3.4 评论内容-情感分布饼图
- 3.3.5 评论内容-词云图
- 三、演示视频
- 四、附完整源码
一、背景介绍
您好,我是@马哥python说,一枚10年程序猿。
以前大家见面都问"吃了没",最近大家见面都问"阳了没",奈何疫情反反复复,惟愿身体安康!
我用python抓取了B站上千条评论,并进行可视化舆情分析,下面详细讲解代码。
(相关资料图)
二、爬虫代码
2.1 展示爬取结果
首先,看下部分爬取数据:
爬取字段含:视频链接、评论页码、评论作者、评论时间、IP属地、点赞数、评论内容。
2.2 爬虫代码讲解
导入需要用到的库:
import requests # 发送请求import pandas as pd # 保存csv文件import os # 判断文件是否存在import timefrom time import sleep # 设置等待,防止反爬import random # 生成随机数
定义一个请求头:
# 请求头headers = { "authority": "api.bilibili.com", "accept": "application/json, text/plain, */*", "accept-language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6", # 需定期更换cookie,否则location爬不到 "cookie": "需换成自己的cookie值", "origin": "https://www.bilibili.com", "referer": "https://www.bilibili.com/video/BV1FG4y1Z7po/?spm_id_from=333.337.search-card.all.click&vd_source=69a50ad969074af9e79ad13b34b1a548", "sec-ch-ua": ""Chromium";v="106", "Microsoft Edge";v="106", "Not;A=Brand";v="99"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": ""Windows"", "sec-fetch-dest": "empty", "sec-fetch-mode": "cors", "sec-fetch-site": "same-site", "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36 Edg/106.0.1370.47"}
请求头中的cookie是个很关键的参数,如果不设置cookie,会导致数据残缺或无法爬取到数据。
那么cookie如何获取呢?打开开发者模式,见下图:
由于评论时间是个十位数:
所以开发一个函数用于转换时间格式:
def trans_date(v_timestamp): """10位时间戳转换为时间字符串""" timeArray = time.localtime(v_timestamp) otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray) return otherStyleTime
向B站发送请求:
response = requests.get(url, headers=headers, ) # 发送请求
接收到返回数据了,怎么解析数据呢?看一下json数据结构:
0-19个评论,都存放在replies下面,replies又在data下面,所以,这样解析数据:
data_list = response.json()["data"]["replies"] # 解析评论数据
这样,data_list里面就是存储的每条评论数据了。
接下来吗,就是解析出每条评论里的各个字段了。
我们以评论内容这个字段为例:
comment_list = [] # 评论内容空列表# 循环爬取每一条评论数据for a in data_list: # 评论内容 comment = a["content"]["message"] comment_list.append(comment)
其他字段同理,不再赘述。
最后,把这些列表数据保存到DataFrame里面,再to_csv保存到csv文件,持久化存储完成:
# 把列表拼装为DataFrame数据df = pd.DataFrame({ "视频链接": "https://www.bilibili.com/video/" + v_bid, "评论页码": (i + 1), "评论作者": user_list, "评论时间": time_list, "IP属地": location_list, "点赞数": like_list, "评论内容": comment_list,})# 把评论数据保存到csv文件df.to_csv(outfile, mode="a+", encoding="utf_8_sig", index=False, header=header)
注意,加上encoding="utf_8_sig",否则可能会产生乱码问题!
下面,是主函数循环爬取部分代码:(支持多个视频的循环爬取)
# 随便找了几个"世界杯"相关的视频IDbid_list = ["BV1DP411g7jx", "BV1M24y117K3", "BV1nt4y1N7Kj"]# 评论最大爬取页(每页20条评论)max_page = 30# 循环爬取这几个视频的评论for bid in bid_list: # 输出文件名 outfile = "b站评论_{}.csv".format(now) # 转换aid aid = bv2av(bid=bid) # 爬取评论 get_comment(v_aid=aid, v_bid=bid)
三、可视化代码
为了方便看效果,以下代码采用jupyter notebook进行演示。
3.1 读取数据
用read_csv读取刚才爬取的B站评论数据:
查看前3行及数据形状:
3.2 数据清洗
处理空值及重复值:
3.3 可视化
3.3.1 IP属地分析-柱形图
可得结论:关于"阳了"这个话题,评论里关注度最高为广东、北京、江苏等地区,其中,广东省的关注度最高。同时,我们注意到,也包含一些海外网友的少量评论。
3.3.2 评论时间分析-折线图
分析出评论时间的分布情况:
可得结论:关于"阳了"这个话题,再抓取到的数据范围内,12.18日的评论数据量最大,达到了将近900的数量峰值。
3.3.3 点赞数分布-直方图
由于点赞数大部分为0或个位数情况,个别点赞数到达成千上万,直方图展示效果不佳,因此,仅提取点赞数<30的数据绘制直方图。
可得结论:从直方图的分布来看,点赞数在0-3个的评论占据大多数,很少点赞数达到了上千上万的情况。证明网友对"阳了"事件的态度分布比较均匀,没有出现态度非常聚集的评论内容。
3.3.4 评论内容-情感分布饼图
针对中文评论数据,采用snownlp开发情感判定函数:
情感分布饼图,如下:
可得结论:关于"阳了"这个话题,积极评价与消极评价占比差不多,积极评价稍高一点,反应出网友对感染阳性的态度反差很大,大约各占一半。
3.3.5 评论内容-词云图
初始化停用词和词云图对象:
jieba分词之后,对分词后数据进行绘制词云图:
可得结论:在词云图中,阳、感染、发烧、症状、疼、嗓子等词汇较大,出现频率较高,反应出众多网友对确诊阳性后描述病症、积极探讨病情的现状。
三、演示视频
代码演示视频:https://www.zhihu.com/zvideo/1590645358123839488
四、附完整源码
完整源码:【爬虫+数据清洗+可视化分析】舆情分析哔哩哔哩"阳了"的评论
by 马哥python说
-
Python爬虫实战,requests+tqdm模块,爬取漫画之家漫画数据(附源码)
前言今天给大家介绍的是Python爬取漫画数据,在这里给需要的小伙伴们代码,并且给出一点小心得。首先是...
来源: 【环球快播报】【爬虫+数据清洗+可视化分析】舆情分析哔哩哔哩"阳了"的评论
Python爬虫实战,requests+tqdm模块,爬取漫画之家漫画数据(附源码)
上海一车主至少5次倒车撞击后车:后车特斯拉全程不动 网友吐槽
热门:《三体》动画口碑直降!豆瓣跌破6分 网友发现人脸模型重复利用
讯息:5MHz处理器+128MB内存:成功运行Win7旗舰版
天天百事通!2022年度七大叫好又叫座游戏 看完手痒别怪我
观察:苹果中国开启新年福利:iPhone 13等降价优惠千元!
当前速看:Ubuntu下的NVIDIA显卡【驱动&CUDA 安装与卸载】
韩国报告首例“食脑虫”病例:一天即死亡、不会人传人
快报:葛优母亲施文心去世:享年94岁 从事电影文学编辑30年
【环球新视野】《西游记之七十二变》终极预告:孙悟空、牛魔王一起学法术
每日讯息!EPIC喜加一:国产之光3A游戏《暗影火炬城》免费送 省了108元
RTX 4070 Ti跑分偷跑:怎么灭掉了RTX 3090 Ti!
滚动:在虚幻引擎中使用蓝图实现简单的对话
每日视讯:Wi-Fi 6路由杀到169元 荣耀路由X4 Pro发布:三个千兆网口
世界新消息丨豆瓣2022年度电影榜单出炉:《阿凡达2》入榜
天天热资讯!虚假新闻检测(MAC)《Hierarchical Multi-head Attentive Network for Evidence-aware F
天天讯息:Atcoder Beginner Contest ABC 283 Ex Popcount Sum 题解 (类欧几里得算法)
环球微资讯!一群环保人士 为何想限制游戏发展?
热资讯!首发199元 荣耀手环7发布:1.47英寸大屏 支持全天候血氧监测
韩国人造肉需求激增:近一半韩国年轻人买过吃过人造肉
02年小伙3年打6份工买车 正能量感染网友:送过外卖、做过服务员等
首发5680元 汉王N10 Max墨水平板发布:13.3英寸大屏
微头条丨失业率最高的西班牙:开始薅中国羊毛
短讯!JMeter
第四章 --------------------XAML名称空间
环球观察:快2023年了还有友商拿8+128卡位凑数 一加11直接12G起步:欢迎友商跟进
天天新消息丨纯可可脂 怡浓55%-100%黑巧克力35元起
N多玩家插反PS5游戏盘!官方发文纠正
环球聚焦:功耗高、死机!AMD正在拼命优化RX 7900驱动
男子自曝无聊送外卖结果2小时挣150 网友质疑摆拍:根本没地方停车
天天消息!AcWing. 1146 新的开始
C919起飞验证!波音、中国商飞新合作:开发全新飞机材料
全球热点!20000转风扇看得见!红魔8 Pro+氘锋透明版图赏
全球头条:想堵车都难 福特车路协同系统落地国内六城
记录--vue.config.js 的完整配置(超详细)!
当前动态:双旦狂欢价:腾讯视频/优酷视频会员5折起
官宣油耗3.8L 实际7L以上!吉利帝豪L雷神Hi·P混动遭出租车司机集体维权
超越索尼PS4!任天堂Switch全球销量达1.18亿台:史上销量第四主机
环球观热点:东航C919今日起验证飞行:持续至2月中旬 商业载客不远了
全球观察:钱不好赚了?苹果今年第四季度净利或下降8%以上
Kubernetes监控手册04-监控Kube-Proxy
天天微头条丨Zabbix技术分享——snmp异常排查指南
对不起,你做的 A/B 实验都是错的——火山引擎 DataTester 科普
当前消息!与时代共命运:数智时代的到来意味着什么?
AcWing1144. 连接格点
每日快看:攀升年底大促!16GB轻薄本仅1698元
【天天报资讯】拆分数据库变相涨价!知网滥用市场支配地位被罚8760万元
焦点播报:神了!1919年一幅漫画预言了手机 这六个场景太真实
今日最新!蚊子变疫苗:中科院新研究可以从源头抑制新发传染病
视点!网友青岛莱西湖附近偶遇老虎 官方回应:已捉回、未造成伤害
全球速递!项目播报 | 方正璞华×连森电子,打造电子材料行业PLM系统的新标杆!
今日快看!Python爬虫学习:Cookie 和 Session 的区别是什么?
环球短讯!Python模块学习,模块是,什么
全球观速讯丨飞项三招教你用协同工具杜绝远程办公“摸鱼”
XYplorer使用教程
李斌再度回应蔚来数据泄露 公司赔破产也不会妥协
【天天新视野】7.4GB/s速度 忆联发布数据中心级SSD:ES.3版容量超15TB
你期待谁?兔年春晚首次大联排引围观 沈腾马丽等明星现身:网友兴奋
奥运冠军还是学霸!谷爱凌晒斯坦福大学首份成绩单:全科满分
每日精选:续航200km有快充 吉利熊猫mini新春版官图发布:妹子最爱
【播资讯】Jaeger&ElasticSearch存储链路追踪数据
环球聚焦:开源漏洞数量增长33%!企业安全债务不堪重负丨行业数据
重拾低价策略!京东善做PPT、说假大空话的高管被刘强东拿下:就是骗子
“史诗级”暴风雪吹乱北美圣诞:40年最冷!节日档期票房泡汤
当前快报:频放生、卖鳄雀鳝!违法放生、丢弃外来入侵物种将被严惩 网友赞
全球简讯:云南女子取快递发现包裹长菌子:感觉很神奇
著名动画艺术家严定宪去世 作品有《大闹天宫》《哪吒闹海》等
天天百事通!【年终总结】求职面试一定要扬长避短
没sei了!父亲哄4岁女儿签20年不交男友合约 网友乐翻
智己汽车:一手好牌打得稀烂
全球看热讯:AcWing244.谜一样的牛
6旬大爷花40年收藏670辆老爷车:耗资4亿元 最爱这品牌
环球视点!美国肯尼迪国际机场一客机发生火情:致5人受伤
天天视讯!男子喂海鸥 头发被当成鸟窝不停被啄
新资讯:接到推销电话后男子“神操作”获赔500元 网友:学到了
环球焦点!真心刹不住 实拍火车撞上货车:动能太强、瞬间脱轨
349元 小米推出首款米家智能鱼缸:半年免换水、支持远程投食
世界快资讯丨欧洲电价有多离谱?开电车比开油车还要贵 对比国内差距大
天天新资讯:广州热门景区重现“人山人海”:订票量猛增
环球今热点:Redmi K60 Pro官宣搭载小米影像大脑2.0:小米迄今最好的影像技术
专家狠批算法推荐:看短视频频率影响未成年人价值取向 毒害太大
新世界铁林是好人还是坏人?新世界铁林的结局是什么?
盲目从众是什么意思?盲目从众的危害有哪些?
江西四大摇篮是什么意思?江西四大摇篮分别是哪里?
明治维新的性质是什么?明治维新的性质和影响是什么?
天天新动态:AcWing291.蒙德里安的梦想题解
世界热推荐:从零演示如何基于 IDL 方式来定义 Dubbo 服务并使用 Triple 协议
全球动态:springboot 连接不上 redis 的三种解决方案!
瑰石装备可以账号共享吗?瑰石的功效与作用是什么?
古代后宫妃子怎么称呼?古代后宫妃子等级排序
过春节的国家有哪些?和我国同一天过春节的国家有哪些?
比特率是什么意思?比特率一般设置多少才算最好?
长篇小说一般多少字?2022年长篇小说排行榜前十名
付款方式无效怎么解决?付款方式有哪些?
冰箱冷藏室多少温度合适?冰箱冷藏室有水是怎么回事?
洗衣机不脱水了是怎么回事?洗衣机不脱水怎么解决?
淘宝换货流程怎么操作?淘宝换货流程注意事项有哪些?
空调模式有哪几种?空调模式三个水滴是什么意思?
ifox是什么格式的文件?ifox文件格式怎么打开?