项目介绍

目标:幕雪elf

目的:获取对方投稿的所有稿件BV号码,用于下载视频

网站:BiliBili(哔哩哔哩)

前置:打开网页浏览器,访问B站并登录账户

所需软件:浏览器,python,VSCode,JJDown(唧唧)

备注:如需下载清晰度为1080p的视频则需要BiliBili大会员

上述了解并完成后我们安装 selenium库

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium

这个库比较大。其实在安装 selenium库的时候,同时安装了msedgedriver.exe
这是个浏览器驱动,我们可以简单的将他理解成selenium通过这个程序实现控制我们浏览器的作用。
注意:如果安装出现问题,导致msedgedriver.exe没有安装的话后续功能是无法实现的。

下面是完整代码:

from selenium import webdriver                       # 导入Selenium的webdriver模块,用于控制浏览器
from selenium.webdriver.common.by import By          # 导入By类,用于指定查找元素的方法
from selenium.webdriver.edge.options import Options  # 导入Edge浏览器的选项设置
import time                                          # 导入time模块,用于等待操作

www_url = []                                         # 创建一个空列表,用于存储提取的视频链接

# 配置Edge浏览器选项以减少日志输出
edge_options = Options()                             # 创建一个Options对象,用于设置Edge浏览器的选项
edge_options.add_argument('--log-level=3')           # 设置日志级别为3,以减少日志输出

browser = webdriver.Edge(options=edge_options)       # 创建一个Edge浏览器实例,并应用上面设置的选项
browser.maximize_window()  # 最大化浏览器窗口
browser.get('https://space.bilibili.com/677303839/video')  # 打开指定的Bilibili视频页面
time.sleep(2)                                              # 等待2秒,确保页面加载完成

ji_shu = 0                                           # 初始化一个计数器,用于记录翻页次数

# 获取元素并输出
for x in range(2,6):                                 # 从第2页开始,到第5页结束
    fan_ye = browser.find_element(By.XPATH, '//*[@id="submit-video-list"]/ul[3]/li[' + str(x) + ']')  # 根据XPath查找翻页按钮
    fan_ye.click()          # 点击翻页按钮
    ji_shu += 1             # 翻页次数加1
    xd = x                  # 将当前页码赋值给xd变量
    xd -= 1                 # 计算实际的页面编号(因为是从第2页开始的)
    time.sleep(1)           # 等待1秒,确保页面加载完成
    print()                 # 打印空行
    print(f"第{xd}页")      # 打印当前页码
    if ji_shu == 4:         # 如果翻页次数等于4
        shang_xian = 27     # 设置上限为27
    else:                   # 否则
        shang_xian = 31     # 设置上限为31
    for i in range(1,shang_xian):  # 遍历每个视频
        popular = browser.find_element(By.XPATH, '//*[@id="submit-video-list"]/ul[2]/li[' + str(i) + ']/a[1]')  # 根据XPath查找视频链接
        popular_video_id = popular.get_attribute('href')        # 获取视频链接的href属性
        www_url.append(popular_video_id[31:-1])                 # 提取BV号并添加到列表中
        print(str(i) + ":" + popular.get_attribute('href'))     # 打印视频链接

time.sleep(10)                 # 等待10秒
print()                        # 打印空行
print()                        # 打印空行
print("以下是处理过的BV号:")    # 打印提示信息
time.sleep(2)                  # 等待2秒
for y in range(len(www_url)):  # 遍历www_url列表
    print(www_url[y])          # 打印每个BV号
time.sleep(30)                 # 等待30秒
browser.quit()                 # 关闭浏览器