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

Python网页爬取问题:电台曲目信息合并与播放时间提取

解决方案

问题1:合并艺术家与曲目名称

每个曲目所在的div.title里,艺术家被<b>标签包裹,我们可以分别提取标签内文本和剩余文本,再清理多余格式:

  • 用track_item.find("b").text.strip()获取纯净的艺术家名称
  • 用track_item.text.replace(artist, "").strip().lstrip("-").strip()移除艺术家部分,清理掉多余的-和空格,得到曲目名

问题2:提取播放时间

播放时间所在的span标签带有专属属性data-name="translated-song-time",可以通过find_next_sibling定位到div.title的同级span元素,直接提取文本内容即可。

完整代码

import requests
from bs4 import BeautifulSoup
import pandas as pd

url = 'https://raddio.net/112842-loversrock-radio/playlist/'

r = requests.get(url)
soup = BeautifulSoup(r.text, "lxml")

# 获取电台名称
station = soup.find("h1").text.strip()
print(station)

# 存储曲目数据的列表
track_data = []

# 遍历所有曲目标题容器
all_track_items = soup.find_all("div", class_="title")
for track_item in all_track_items:
    # 提取艺术家
    artist = track_item.find("b").text.strip()
    # 提取并清理曲目名称
    track_name = track_item.text.replace(artist, "").strip().lstrip("-").strip()
    # 提取播放时间
    play_time = track_item.find_next_sibling("span", {"data-name": "translated-song-time"}).text.strip()
    # 添加到数据列表
    track_data.append({
        "艺术家": artist,
        "曲目名称": track_name,
        "播放时间": play_time
    })

# 转换为Pandas DataFrame
df = pd.DataFrame(track_data)
print(df)
# 可选:保存为CSV文件
# df.to_csv("电台曲目列表.csv", index=False, encoding="utf-8-sig")

补充说明

如果HTML结构中时间span不是title的直接兄弟元素,可改用track_item.parent.find("span", {"data-name": "translated-song-time"}),从父容器内查找时间标签。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:33:36