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

提取音乐商店通讯数据脚本输出空白,求修正方案

问题修正方案

你的CSV输出空白的核心问题是元素定位逻辑错误,以下是具体修正步骤:

错误分析

  1. 你明确说明专辑标题和乐队名在h3和h4元素中,但代码错误地去查找td元素的td_class属性(HTML标准中不存在td_class这个属性)。
  2. 未做空值判断就直接调用.text,一旦找不到目标元素会引发异常,导致脚本中断或数据丢失。

修正后的代码

from bs4 import BeautifulSoup
import requests
import pandas as pd

url = "https://www.musicmaniarecords.be/_sys/newsl_view?n=260&sub=Tmpw6Rij5D"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 定位包含专辑信息的行容器(页面实际结构为tr标签带row类)
album_rows = soup.find_all('tr', class_='row')

album_title = []
band_name = []

for row in album_rows:
    # 直接通过h3、h4标签提取目标内容
    title_elem = row.find('h3')
    band_elem = row.find('h4')
    
    # 空值判断,避免找不到元素时触发报错
    if title_elem and band_elem:
        album_title.append(title_elem.get_text(strip=True))
        band_name.append(band_elem.get_text(strip=True))

# 生成CSV并去除冗余索引列
df = pd.DataFrame({'album_title': album_title, 'band_name': band_name})
df.to_csv('music_records.csv', index=False)

关键修正点

  • 元素定位修正:页面中实际承载专辑信息的是tr.row元素,而非a.row;直接通过h3、h4标签定位目标文本,摒弃错误的td_class属性逻辑。
  • 空值安全处理:添加if title_elem and band_elem判断,确保仅在找到有效元素时才提取文本,避免AttributeError。
  • CSV输出优化:添加index=False参数,避免生成多余的索引列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 04:40:19