欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 资讯 > Python爬虫——获取B站博主主页视频信息

Python爬虫——获取B站博主主页视频信息

2025/10/12 14:02:59 来源:https://blog.csdn.net/weixin_63000012/article/details/145151103  浏览:    关键词:Python爬虫——获取B站博主主页视频信息

这是一个用于爬取B站用户空间视频信息的爬虫工具,可以自动收集视频标题、播放量、时长等数据,并导出为CSV格式。

【功能特点】
* 自动爬取B站用户空间的视频信息
* 支持分页爬取(默认1-8页)
* 自动去重功能
* 错误重试机制
* CSV格式数据导出

【环境要求】
1. Python版本
- Python 3.7+

2. 依赖库
- selenium
- webdriver_manager

安装命令:

pip install selenium webdriver_manager

3. Chrome浏览器要求
- 需要安装Chrome浏览器
- 需要下载对应版本的ChromeDriver
- ChromeDriver路径配置示例:
  service = Service(executable_path="D:\\Browser\\chrome\\chromedriver-win64\\chromedriver.exe")

【使用方法】
1. 配置ChromeDriver路径

#修改为你的ChromeDriver路径
service = Service(executable_path="D:\\Browser\\chrome\\chromedriver-win64\\chromedriver.exe")
driver = webdriver.Chrome(service=service, options=options)
driver.set_page_load_timeout(60)
driver.set_script_timeout(60)

2.配置需要爬取的B站博主的主页视频链接

#修改为需要爬取的博主的主页链接
#pn={page}针对多页操作
url = f"https://space.bilibili.com/3816626/video?tid=0&pn={page}&keyword=&order=pubdate"
print(f"正在获取第 {page} 页数据...")
driver.get(url)
time.sleep(5)  # 等待页面加载


3. 运行爬虫程序:python bilibili_scraper.py

完整示例代码:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import csv
from datetime import datetimedef get_bilibili_videos():# 配置Chrome选项options = webdriver.ChromeOptions()options.add_argument('--disable-gpu')options.add_argument('--no-sandbox')options.add_argument('--disable-dev-shm-usage')options.add_argument('--ignore-certificate-errors')options.add_argument('--ignore-ssl-errors')options.add_argument('--allow-insecure-localhost')options.add_experimental_option('excludeSwitches', ['enable-logging'])driver = Nonemax_retries = 3video_data = []seen_titles = set()  # 用于去重的标题集合video_id = 1  # 初始化视频IDtry:#修改为你的ChromeDriver路径service = Service(executable_path="D:\\Browser\\chrome\\chromedriver-win64\\chromedriver.exe")driver = webdriver.Chrome(service=service, options=options)driver.set_page_load_timeout(60)driver.set_script_timeout(60)# 遍历页码1-8for page in range(1, 9):retry_count = 0while retry_count < max_retries:try:url = f"https://space.bilibili.com/3816626/video?tid=0&pn={page}&keyword=&order=pubdate"print(f"正在获取第 {page} 页数据...")driver.get(url)time.sleep(5)  # 等待页面加载# 查找所有视频项video_items = WebDriverWait(driver, 20).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "li.small-item.fakeDanmu-item")))for item in video_items:try:# 获取标题title = item.find_element(By.CSS_SELECTOR, "a.title").get_attribute('title')# 如果标题已存在,跳过这个视频if title in seen_titles:continue# 获取视频时长video_length = item.find_element(By.CSS_SELECTOR, "span.length").text# 获取播放量view_count = item.find_element(By.CSS_SELECTOR, "span.play span").text# 获取发布时间upload_time = item.find_element(By.CSS_SELECTOR, "span.time").text.strip()# 将数据添加到列表video_data.append({'video_id': video_id,'title': title,'view_count': view_count,'video_length': video_length,'time': upload_time})# 添加标题到已见集合并增加IDseen_titles.add(title)video_id += 1except Exception as e:print(f"处理视频项时出错: {e}")continuebreak  # 成功获取数据后跳出重试循环except Exception as e:retry_count += 1print(f"第 {page} 页第 {retry_count} 次尝试失败: {e}")if retry_count < max_retries:print(f"等待 5 秒后重试...")time.sleep(5)else:print(f"第 {page} 页达到最大重试次数,继续下一页")# 导出到CSV文件csv_filename = f"bilibili_videos_{datetime.now().strftime('%Y%m%d_%H%M%S')}.csv"with open(csv_filename, 'w', newline='', encoding='utf-8-sig') as f:writer = csv.DictWriter(f, fieldnames=['video_id', 'title', 'view_count', 'video_length', 'time'])writer.writeheader()writer.writerows(video_data)print(f"成功获取 {len(video_data)} 个视频信息,已保存到 {csv_filename}")except Exception as e:print(f"发生错误: {e}")finally:if driver:driver.quit()return video_dataif __name__ == "__main__":get_bilibili_videos() 

【数据格式】
输出CSV文件格式:
文件命名规则:bilibili_videos_YYYYMMDD_HHMMSS.csv

包含字段:
- video_id: 视频编号(整数)
- title: 视频标题(字符串)
- view_count: 播放量(字符串)
- video_length: 视频时长(字符串)
- time: 发布时间(字符串)

示例数据:
video_id,title,view_count,video_length,time
1,示例视频标题,1.2万,12:34,2024-01-01

【程序运行框架】
1. 初始化配置
   - 配置Chrome选项
   - 初始化WebDriver
   - 设置重试参数

2. 数据爬取
   - 遍历目标页面(1-8页)
   - 提取视频信息
   - 数据去重处理

3. 数据存储
   - CSV文件导出
   - 自动命名保存

【错误处理】
- 页面加载失败自动重试(最多3次)
- 单个视频解析失败不影响整体运行
- 异常信息实时打印

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词