Python超简短代码实现B站视频爬取全攻略:无需音视频拼接的超详细教程!

B 站 (Bilibili) 是国内最受欢迎的视频平台之一,很多时候我们想下载自己喜欢的视频离线观看,但 B 站并没有提供直接的下载按钮。这篇文章将带你用 Python 编写一个爬虫,自动获取 B 站视频地址并下载它!

本文适合有一定 Python 基础的开发者,如果你是爬虫新手,也可以跟着代码一步步学习!


1. 准备工作

在开始编写爬虫之前,确保你的 Python 环境已经安装了以下依赖库:

pip install requests

requests 用于发送 HTTP 请求,获取网页内容。


2. 爬取 B 站视频核心代码

import requests
import re
import json

# 用户输入 B 站视频 URL
url = input("请输入你想爬取视频的 URL:")

# 请求头,模拟浏览器访问 B 站
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
                  "(KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36 Edg/131.0.0.0",
    "referer": "https://www.bilibili.com/",
    "cookie": "你的 Cookie",  # 需要填写自己的 Cookie 才能访问
}

# 发送请求,获取网页 HTML 内容
res = requests.get(url, headers=headers).text

# 使用正则表达式提取视频的 avid、bvid 和 cid
pattern = r'"aid":(\d+),"bvid":"([^"]+)","cid":(\d+)'
avid, bvid, cid = re.findall(pattern, res)[0]
print(f"AID: {avid}, BVID: {bvid}, CID: {cid}")

# 构造 API 请求,获取视频播放地址
play_url = f"https://api.bilibili.com/x/player/wbi/playurl?avid={avid}&bvid={bvid}&cid={cid}"
resp = requests.get(play_url, headers=headers).text
resp_dict = json.loads(resp)

# 提取视频的真实 URL
video_url = resp_dict['data']['durl'][0]['url']
print("视频地址:", video_url)

# 下载视频
response = requests.get(video_url, headers=headers).content
with open("bilivideo.mp4", "wb") as f:
    f.write(response)

print("视频下载完成!")

3. 代码讲解

(1)获取 B 站视频的基本信息

B 站的视频页面中包含 avidbvidcid,我们使用正则表达式提取它们,方便后续 API 请求。

(2)调用 API 获取视频地址

B 站提供了一个 API,https://api.bilibili.com/x/player/wbi/playurl,它可以返回视频的真实播放地址,我们利用 requests 发送请求并解析 JSON 数据。

(3)下载视频

获取到视频的 URL 后,我们再用 requests.get() 直接下载视频并保存为 bilivideo.mp4


4. 关键问题解答

  1. 为什么需要 Cookie?

  2. B 站对 API 请求做了访问限制,必须携带有效的 Cookie 才能获取到视频数据,否则会返回错误信息。
  3. 如何获取自己的 Cookie?

  4. 打开 B 站官网,登录你的账号
  5. F12 打开开发者工具
  6. 切换到 Network 选项卡,刷新页面
  7. 找到请求 www.bilibili.com,复制其中的 cookie
  8. 这段代码能爬取所有 B 站视频吗?

  9. 普通视频可以,但付费、会员专享或部分版权受限的视频无法下载。
  10. 爬取 B 站视频是否合法?

  11. 本教程仅供学习交流,切勿用于商业或非法用途,避免侵权。

5. 结语

通过本教程,你学会了如何用 Python 编写爬虫来爬取 B 站视频。如果你对爬虫技术感兴趣,可以继续深入学习 SeleniumBeautifulSoupScrapy 等更高级的爬虫框架!

如果你觉得这篇文章对你有帮助,欢迎点赞、收藏、分享!🚀🚀🚀

作者:来自星星的坤

物联沃分享整理
物联沃-IOTWORD物联网 » Python超简短代码实现B站视频爬取全攻略:无需音视频拼接的超详细教程!

发表回复