You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python的BeautifulSoup提取Bandcamp页面的资源链接

可通过BeautifulSoup提取Bandcamp资源链接,具体实现逻辑如下
  • 核心注意点:Bandcamp的资源直链并未直接存放在静态HTML的可见DOM节点中,而是内嵌在页面的<script>标签配置数据里,不能直接通过CSS选择器定位节点获取,需要先提取脚本内的JSON配置再解析
  • 实现步骤:
    1. 发送请求获取目标页面的完整HTML源码,建议携带User-Agent请求头避免被反爬拦截
    2. 用BeautifulSoup筛选出包含data-tralbum配置项的脚本标签
    3. 用正则匹配提取配置对应的JSON字符串,做转义处理后解析为字典对象
    4. 从字典的trackinfo字段中即可获取对应曲目的音频、封面等资源链接
  • 示例代码:
import requests
from bs4 import BeautifulSoup
import json
import re

# 替换为你要爬取的Bandcamp页面地址
target_url = "替换为实际目标页地址"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
}

# 请求页面
resp = requests.get(target_url, headers=headers)
resp.encoding = "utf-8"
soup = BeautifulSoup(resp.text, "html.parser")

# 定位包含资源配置的脚本
data_script = soup.find("script", string=re.compile(r"data-tralbum"))
# 提取JSON配置字符串
raw_data = re.search(r'data-tralbum="(.*?)"', str(data_script)).group(1)
# 转义特殊字符后解析为字典
album_data = json.loads(raw_data.replace("&quot;", '"'))

# 遍历输出所有曲目的128Kbps音频链接
for track in album_data["trackinfo"]:
    if track.get("file"):
        print(f"曲目《{track['title']}》音频链接:{track['file']['mp3-128']}")

注意:如果Bandcamp前端页面后续迭代调整了配置字段的命名和存储位置,对应调整正则匹配规则和字段读取路径即可。

内容的提问来源于stack exchange,提问作者Yusuf Blythe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 22:24:00