B站封面提取:用影片連結獲取原圖,附 BV 號與儲存方法

AI Router Oct 10, 2026

B站封面提取的目標,是拿到影片封面圖片本身,而不是給影片畫面截圖。 截圖可能帶播放按鈕、字幕或頁面縮放,封面地址則對應平臺返回的圖片資源。

本文是一篇操作教程,不是已經上線的線上封面提取器。可以在瀏覽器中查詢圖片,也可以用下面的 Python 示例讀取公開影片的封面地址。

第一步:從連結找到 BV 號

完整影片連結的路徑通常包含 BV 號,例如 https://www.bilibili.com/video/BV1GJ411x7h7/。只需要其中的 BV1GJ411x7h7,後面的分享引數不需要一起復制。

如果拿到的是 b23.tv 分享短連結,先在瀏覽器裡開啟,等它跳到影片頁後再複製完整地址。不要把短連結末尾的字元當成 BV 號。

方法一:在瀏覽器查詢封面圖片

  1. 開啟影片頁,按 F12 或瀏覽器的“檢查”開啟開發者工具。
  2. 在頁面原始碼或 Elements 中搜尋 og:image。如果找到對應 meta 標籤,複製它的 content 圖片地址。
  3. 將圖片地址在新標籤頁開啟,再選擇儲存圖片。
  4. 如果頁面沒有這項資訊,開啟 Network,篩選圖片請求,尋找與影片封面一致的資源;不要隨意執行別人要求貼上到控制檯的指令碼。

不同頁面版本的標籤結構可能變化。找不到 og:image 不代表沒有封面,需要換另一種方法。

方法二:用 Python 讀取封面地址

B站公開介面當前可返回影片資訊,其中 data.pic 是封面地址。2026 年 10 月 9 日核查了下面示例的介面響應。這不是我們擁有穩定性保證的 API 合約,介面可能調整、限流,或對部分影片返回錯誤。

import json
from urllib.request import Request, urlopen

bvid = "BV1GJ411x7h7"  # 换成目标视频的 BV 号
url = f"https://api.bilibili.com/x/web-interface/view?bvid={bvid}"
request = Request(url, headers={"User-Agent": "Mozilla/5.0"})
with urlopen(request, timeout=15) as response:
    result = json.load(response)

if result.get("code") != 0:
    raise RuntimeError(result.get("message", "读取视频信息失败"))
cover = result.get("data", {}).get("pic")
if not cover:
    raise RuntimeError("响应中没有封面地址")
print(cover)

執行後,把列印出的地址放進瀏覽器開啟並儲存。這段程式碼只讀取影片資訊,不下載影片,也不需要帳戶 Cookie。介面示例見B站影片資訊響應。

提取出來的圖片是高畫質原圖嗎?

先檢查儲存後圖片的實際畫素尺寸,而不是瀏覽器顯示得有多大。平臺返回的資源不一定等於創作者最初上傳檔案的完整尺寸,也不能憑空恢復原圖沒有的細節。

如果複製的是帶縮放或格式引數的地址,比較不同資源的實際尺寸再選擇;不要把所有圖片 URL 的字尾都機械刪除。遇到 WebP 檔案,也不要僅改副檔名就稱為 PNG。

常見失敗原因

現象 先檢查什麼
介面提示找不到影片 BV 號是否完整、影片是否仍公開可訪問
返回限流或請求被拒絕 停止連續重試,稍後用瀏覽器單次檢視
瀏覽器顯示空圖片 地址是否複製完整,影片是否使用預設或特殊封面
前端 fetch 報跨域錯誤 瀏覽器跨域限制不等於介面沒有封面;本文示例執行在本地 Python
儲存的是頁面 HTML 是否開啟了圖片資源,而不是影片頁面

能提取 YouTube 封面嗎?

B站和 YouTube 的影片標識、介面不同,不能把 YouTube 連結塞進這個 B站示例。要批次儲存自己有權使用的影片素材,可以另外瞭解yt-dlp。封面可訪問也不等於可隨意轉載,釋出時仍需確認原作者授權。