使用itunes-dl脚本下载Apple Music专辑时遇ValueError报错求助
解决itunes-dl脚本下载Apple Music专辑时的
ValueError: substring not found问题 问题场景
使用itunes-dl脚本下载Apple Music专辑时,触发如下报错:
File "D:\fml.py", line 303, in main schema_start_index = album_res.index(schema_start_string) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: substring not found
尝试修改第302行的schema_start_string,将原代码中的name替换为id:
schema_start_string = '<script id="schema:music-album" type="application/ld+json">'
但报错依旧。
可行解决方法
- 检查页面结构变更:手动打开目标专辑的HTML页面,查看实际包含
schema:music-album的script标签属性格式——Apple Music网页结构可能已更新,比如属性改为class而非id,或属性值存在大小写、额外字符等细微改动,需按实际标签内容调整匹配字符串。 - 改用正则匹配替代精确查找:原代码的
index方法依赖精确字符串匹配,容错性差,替换为正则表达式定位标签:import re # 替换原有的index查找逻辑 schema_match = re.search(r'<script[^>]*schema:music-album[^>]*type="application/ld\+json">', album_res) if schema_match: schema_start_index = schema_match.end() else: raise ValueError("无法找到schema:music-album标签") - 完善请求头模拟:脚本可能未模拟浏览器请求头,导致Apple Music返回的页面结构与浏览器中看到的不一致。添加
User-Agent、Accept等常见浏览器请求头,确保拿到完整的网页内容。 - 验证专辑访问权限:部分Apple Music专辑需登录才能获取完整页面数据,若脚本未处理登录逻辑,返回的页面可能不含schema数据。检查目标专辑是否需要登录,若需要,给脚本添加对应Cookie或登录凭证。
内容的提问来源于stack exchange,提问作者fafaffeol
相关产品推荐
相关产品推荐

