【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论

您好,我是@马哥python说,一枚10年程序猿。

一、爬取目标

之前,我分享过一些B站的爬虫:
【Python爬虫案例】用Python爬取李子柒B站视频数据
【Python爬虫案例】用python爬哔哩哔哩搜索结果
【爬虫+情感判定+Top10高频词+词云图】"谷爱凌"热门弹幕python舆情分析

但我学习群中小伙伴频繁讨论B站评论的爬取,所以,再分享一个B站视频评论的爬虫。

二、展示爬取结果

首先,看下部分爬取数据:
【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论

爬取字段含:视频链接、评论页码、评论作者、评论时间、IP属地、点赞数、评论内容

三、爬虫代码

导入需要用到的库:

import requests  # 发送请求
import pandas as pd  # 保存csv文件
import os  # 判断文件是否存在
import time
from 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如何获取呢?打开开发者模式,见下图:
【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论

由于评论时间是个十位数:
【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论

所以开发一个函数用于转换时间格式:

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数据结构:
【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论

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',否则可能会产生乱码问题!

下面,是主函数循环爬取部分代码:(支持多个视频的循环爬取)

# 随便找了几个"世界杯"相关的视频ID
bid_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)

四、同步视频

演示视频:
https://www.zhihu.com/zvideo/1584884344677437440


五、附完整源码

附完整代码: 【B站评论爬虫】用python爬取上千条哔哩哔哩评论

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:【2023最新B站评论爬虫】用python爬取上千条哔哩哔哩评论 - Python技术站

(0)
上一篇 2023年4月2日
下一篇 2023年4月2日

相关文章

  • 【爬虫+情感判定+Top10高频词+词云图】“谷爱凌”热门弹幕python舆情分析

    目录 一、背景介绍 二、代码讲解-爬虫部分 2.1 分析弹幕接口 2.2 讲解爬虫代码 三、代码讲解-情感分析部分 3.1 整体思路 3.2 情感分析打标 3.3 统计top10高频词 3.4 绘制词云图 3.5 情感分析结论 四、同步讲解视频 五、附完整源码 一、背景介绍 最近几天,谷爱凌在冬奥会赛场上夺得一枚宝贵的金牌,为中国队贡献了自己的荣誉! 针对此…

    2023年4月2日
    00
  • 【拖拽可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!

    目录 一、设计方案 二、项目背景 三、电影爬虫 3.1 导入库 3.2 发送请求 3.3 解析页面 3.4 存储到csv 3.5 讲解视频 四、数据持久化存储 4.1 导入库 4.2 存入MySQL 4.3 讲解视频 五、开发可视化大屏 5.1 柱形图 5.2 饼图 5.3 词云图 5.4 数据表格 5.5 涟漪散点图 5.6 条形图 5.7 大标题 5.8…

    2023年4月2日
    00
  • 【2023微博签到爬虫】用python爬上千条m端微博签到数据

    一、爬取目标 大家好,我是 @马哥python说,一枚10年程序猿。 今天分享一期python爬虫案例,爬取目标是新浪微博的微博签到数据,字段包含:页码,微博id,微博bid,微博作者,发布时间,微博内容,签到地点,转发数,评论数,点赞数 经过分析调研,发现微博有3种访问方式,分别是: PC端网页:https://weibo.com/ 移动端:https:/…

    2023年3月31日
    00
  • 【GUI开发案例】用python爬百度搜索结果,并开发成exe桌面软件!

    目录 一、背景介绍 1.1 老版本 1.2 爬取目标 1.3 软件运行截图 1.4 爬取数据 1.5 实现思路 二、代码讲解 2.1 爬虫 2.2 软件界面 2.3 日志模块 三、软件运行演示 四、完整源码 一、背景介绍 你好,我是 @马哥python说 ,一名10年程序猿。 1.1 老版本 之前我开发过一个百度搜索的python爬虫代码,具体如下:【pyt…

    2023年4月2日
    00
  • 【11个适合毕设的Python可视化大屏】用pyecharts开发拖拽式可视化数据大屏

    你好,我是@马哥python说,一枚10年程序猿。 一、效果演示 以下是我近期用Python开发的原创可视化数据分析大屏,非常适合毕设用,下面逐一展示:(以下是截图,实际上有动态交互效果哦) 以下大屏均为@马哥python说的个人原创,请勿转载。 1.1 影视剧分析大屏 1.2 豆瓣电影分析大屏A 1.3 豆瓣电影分析大屏B 1.4 58同城房源分析大屏 1…

    python 2023年5月10日
    00
  • 【GUI开发】用python爬YouTube博主信息,并开发成exe软件!

    目录 一、背景介绍 二、代码讲解 2.1 爬虫 2.2 tkinter界面 2.3 存日志 三、说明 一、背景介绍 你好,我是@马哥python说,一名10年程序猿。 最近我用python开发了一个GUI桌面软件,目的是爬取相关YouTube博主的各种信息,字段包括: 视频标题、视频链接、博主名称、博主链接、国家、telegram链接、whatsapp链接、…

    2023年4月2日
    00
  • 【NLP教程】用python调用百度AI开放平台进行情感倾向分析

    目录 一、背景 二、操作步骤 2.1 创建应用 2.2 获取token 2.3 情感倾向分析 三、其他情感分析 四、讲解视频 一、背景 Hi,大家!我是 @马哥python说 ,一名10年程序猿。 今天我来演示一下:通过百度AI开放平台,利用python调用百度接口进行中文情感倾向分析,并得出情感极性分为积极、消极还是中性以及置信度结果。 二、操作步骤 首先…

    python 2023年4月25日
    00
  • 【Python数据分析案例】python数据分析老番茄B站数据(pandas常用基础数据分析代码)

    目录 一、爬取老番茄B站数据 二、python数据分析 1、读取数据源 2、查看数据概况 3、查看异常值 4.1、查看最大值(max函数) 4.2、查看最小值(min函数) 5.1、查看TOP3的视频(nlargest函数) 5.2、查看倒数3的视频(nsmallest函数) 6、查看相关性 7.1、可视化分析-plot 7.2、可视化分析-pyechart…

    2023年4月2日
    00
合作推广
合作推广
分享本页
返回顶部