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

使用Python BeautifulSoup提取div中data-url属性链接失败求解决方案

解决方案
  • 原代码i.findAll(['data-url'])用法错误:find_all/FindAll是用来查找HTML标签的,data-url是元素的属性而非标签名,所以无法匹配到对应内容
  • 提取属性值需要用BeautifulSoup元素的get()方法,直接打印父元素当然会输出完整标签内容

修改后的可运行代码如下:

import requests 
from bs4 import BeautifulSoup

header = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"
}

resp = requests.get("https://www.chosic.com/free-music/all/" , headers=header)
soup = BeautifulSoup(resp.content, 'lxml')

url_list = []
# 注意不要用list做变量名,会覆盖Python内置的list类型
music = soup.find_all('div',{'class':'track-audio'})
for item in music:
    # 匹配所有携带data-url属性的子div元素
    audio_tag = item.find('div', attrs={'data-url': True})
    if audio_tag:
        # 提取data-url属性的属性值
        music_url = audio_tag.get('data-url')
        url_list.append(music_url)
        print(music_url)

# 输出完整的音频链接列表
print(url_list)

额外注意事项:

  • 不要用list作为变量名,会覆盖Python内置的列表构造函数,后续执行列表相关操作时会触发未知错误
  • 增加了非空判断逻辑,避免页面部分track-audio标签下无对应音频元素时触发空指针报错
  • attrs={'data-url': True}的写法可以直接匹配所有携带data-url属性的元素,不需要提前知晓对应子元素的类名

内容的提问来源于stack exchange,提问作者hf wassim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 17:39:04