艾尔海森角色PV弹幕爬虫
打开埃尔海森角色PV的视频,F12打开开发者工具,选择“网络”,并在网页上选择弹幕日期,得到的界面如下所示
搜索栏中输入history进行查找,选择seg.so 可以得到网页URL等信息。
弹幕爬虫
弹幕爬虫部分代码主要定义了两个function,应用到的模块如下:
import re
import time
import requests
import pandas as pd
from tqdm import trange
同一个视频在不同的日期下url只有“date=”部分发生变化。因此我们用第一个函数get_bilibili_url用来获得不同日期下的网页url
def get_bilibili_url(start, end):
url_list = []
date_list = [i for i in pd.date_range(start, end).strftime('%Y-%m-%d')]
for date in date_list:
url = f"https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=968914022&date={date}"
url_list.append(url)
return url_list
第二个函数get_bilibili_danmu用来获得相应的弹幕信息并保存为csv文件
def get_bilibili_danmu(url_list):
headers = {
'user-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36",
'cookie': "自己的cookie",
'Origin': "https://www.bilibili.com",
'Referer': "https://www.bilibili.com/video/BV1MM411c7m6/",
'sec-fetch-dest': "empty",
'sec-fetch-mode': "cors",
'sec-fetch-site': "same-site"
}
for i in trange(len(url_list)):
url = url_list[i]
response = requests.get(url, headers=headers)
html_data = response.text
result = re.findall(".*?([\u4E00-\u9FA5]+).*?", html_data)
for j in result:
with open('bilibili_elheisen_danmu.csv', mode='a', encoding='utf-8') as f:
f.write(j)
f.write('\n')
print(j)
time.sleep(3)
f.close()
主函数写为
if __name__ == "__main__":
start = '1/12/2023'
end = '1/12/2023'
url_list = get_bilibili_url(start, end)
get_bilibili_danmu(url_list)
print("艾尔海森弹幕爬取完成")
得到的csv文件如下所示
参考连接
https://blog.csdn.net/fei347795790/article/details/113118236
https://mp.weixin.qq.com/s/SZ1fVMcjAxJbVVnRwX_YXw