获取B站分P标题的脚本

有时候在B站学习,编写学习笔记时,视频的分P数比较多,如下所示:

批量获取B站标题作为笔记的标题,可以大大提升编写笔记的效率,此时可以使用如下脚本获取标题:

python 复制代码
import urllib
import urllib.request
import re


# 发送请求并返回获取到的HTML数据(字符串)
def get_html(url):
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 Edg/87.0.664.75'}
    # 使用传入的url创建一个请求
    request = urllib.request.Request(url, headers=header)
    # 发送请求并得到响应
    response = urllib.request.urlopen(request)
    # 获取通过utf-8格式解码后的HTML数据
    HTML = response.read().decode('utf-8')
    # 返回HTML数据
    return HTML


# 将数据保存到文件
def save_titles(data):
    file = open('标题.txt', 'w')
    for i, title in enumerate(data):
        file.write(title)
        file.write('\n')
        print(f'第{i}个标题写入成功!')
    file.close()


# 从HTML数据中匹配出所有标题
def get_titles(html):
    # 通过正则表达式创建一个正则匹配模式
    pattern = re.compile('<div class="title-txt">(.*?)</div>')
    # 得到所有匹配结果,findall的返回值类型为列表
    titles = re.findall(pattern, html)
    # 返回所有标题内容
    return titles

# 发送请求并获取数据
html = get_html('https://www.bilibili.com/video/xxx')# 此处替换为希望获取标题的视频链接
# 匹配出我们需要的数据
titles = get_titles(html)
# 将数据保存到本地
save_titles(titles)
# 暂停一下
pause = input('任意键退出')

将脚本中get_html函数的参数替换为希望获取标题的视频链接,运行脚本,即可生成标题.txt: