医疗网站优化,外包做网站,住房建设和城乡管理局官网,ui界面设计介绍文章目录 一、爬取目标二、展示爬取结果三、爬虫代码四、同步视频五、附完整源码 您好#xff0c;我是
马哥python说#xff0c;一枚10年程序猿。 一、爬取目标
之前#xff0c;我分享过一些B站的爬虫#xff1a; 【Python爬虫案例】用Python爬取李子柒B站视频数据 【Pyt… 文章目录 一、爬取目标二、展示爬取结果三、爬虫代码四、同步视频五、附完整源码 您好我是
马哥python说一枚10年程序猿。 一、爬取目标
之前我分享过一些B站的爬虫 【Python爬虫案例】用Python爬取李子柒B站视频数据 【Python爬虫案例】用python爬哔哩哔哩搜索结果 【爬虫情感判定Top10高频词词云图】谷爱凌热门弹幕python舆情分析 但我学习群中小伙伴频繁讨论B站评论的爬取所以再分享一个B站视频评论的爬虫。
二、展示爬取结果
首先看下部分爬取数据
爬取字段含视频链接、评论页码、评论作者、评论时间、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;q0.9,en;q0.8,en-GB;q0.7,en-US;q0.6,# 需定期更换cookie否则location爬不到cookie: 需换成自己的cookie值,origin: https://www.bilibili.com,referer: https://www.bilibili.com/video/BV1FG4y1Z7po/?spm_id_from333.337.search-card.all.clickvd_source69a50ad969074af9e79ad13b34b1a548,sec-ch-ua: Chromium;v106, Microsoft Edge;v106, Not;ABrand;v99,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, headersheaders, ) # 发送请求接收到返回数据了怎么解析数据呢看一下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, modea, encodingutf_8_sig, indexFalse, headerheader)注意加上encoding‘utf_8_sig’否则可能会产生乱码问题
下面是主函数循环爬取部分代码支持多个视频的循环爬取
# 随便找了几个世界杯相关的视频ID
bid_list [BV1DP411g7jx, BV1M24y117K3, BV1nt4y1N7Kj]
# 评论最大爬取页每页20条评论
max_page 30
# 循环爬取这几个视频的评论
for bid in bid_list:# 输出文件名outfile b站评论_{}.csv.format(now)# 转换aidaid bv2av(bidbid)# 爬取评论get_comment(v_aidaid, v_bidbid)四、同步视频
演示视频 【2023爬虫演示】用python抓取上千条「卡塔尔世界杯」B站评论 五、附完整源码
附完整代码 【B站评论爬虫】用python爬取上千条哔哩哔哩评论 我是马哥全网累计粉丝上万欢迎一起交流python技术。
各平台搜索“马哥python说”知乎、哔哩哔哩、小红书、新浪微博。