chrome网页视频抓取(Python实现抓取B站视频弹幕评论,废话不多说 )
优采云 发布时间: 2021-11-09 01:21chrome网页视频抓取(Python实现抓取B站视频弹幕评论,废话不多说
)
前言
用Python捕捉B站视频弹幕评论,废话不多说。
让我们愉快的开始吧~
开发工具
Python版本:3.6.4
相关模块:
请求模块;
重新模块;
熊猫模块;
以及一些 Python 自带的模块。
环境设置
安装Python并将其添加到环境变量中,pip安装所需的相关模块。
思维分析
本文以爬取视频《“这是我见过最拽的中国奥运冠军”》为例,讲解如何爬取B站视频的弹幕和评论!
目标地址
https://www.bilibili.com/video/BV1wq4y1Q7dp
抢弹幕
网络分析
B站视频的弹幕不像TXSP。播放视频会触发弹幕数据包。他需要点击网页右侧弹幕列表行展开,然后点击查看历史弹幕,获取视频弹幕开始日期到结束日期链接:
在链接的末尾,使用oid和开始日期形成弹幕日期URL:
https://api.bilibili.com/x/v2/dm/history/index?type=1&oid=384801460&month=2021-08
在此基础上,点击任一生效日期,即可获得该日期的弹幕数据包。里面的内容目前无法读取。之所以确定是弹幕数据包,是因为日期是点击他刚加载出来的,链接和上一个链接有关系:
获取到的网址:
https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=384801460&date=2021-08-08
URL中的oid是视频弹幕链接的id值;data参数是刚才的日期,要获取视频的所有弹幕内容,只需要修改data参数即可。data参数可以从上面弹幕日期url中获取,也可以自己构造;网页数据格式为json格式
代码
import requests\
import pandas as pd\
import re\
\
def data_resposen(url):\
headers = {\
"cookie": "你的cookie",\
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36"\
}\
resposen = requests.get(url, headers=headers)\
return resposen\
\
def main(oid, month):\
df = pd.DataFrame()\
url = f'https://api.bilibili.com/x/v2/dm/history/index?type=1&oid={oid}&month={month}'\
list_data = data_resposen(url).json()['data'] # 拿到所有日期\
print(list_data)\
for data in list_data:\
urls = f'https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid={oid}&date={data}'\
text = re.findall(".*?([\u4E00-\u9FA5]+).*?", data_resposen(urls).text)\
for e in text:\
print(e)\
data = pd.DataFrame({'弹幕': [e]})\
df = pd.concat([df, data])\
df.to_csv('弹幕.csv', encoding='utf-8', index=False, mode='a+')\
\
if __name__ == '__main__':\
oid = '384801460' # 视频弹幕链接的id值\
month = '2021-08' # 开始日期\
main(oid, month)
显示结果