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

使用requests_html爬取Apple Music播放列表时移除特定span元素

问题:移除Apple Music爬取结果中的特定span元素

我是Python新手,想要实现爬取Apple Music播放列表信息的功能,代码如下:

import datetime
from requests_html import HTMLSession
session = HTMLSession()
url = 'https://music.apple.com/us/playlist/top-100-hong-kong/pl.7f35cffa10b54b91aab128ccc547f6ef'
applemusic = session.get(url)

applemusic.html.render(sleep=1, scrolldown=1)

data = applemusic.html.xpath('//*[@id="scrollable-page"]/main/div/div[2]', first=True)
artist_list = data.find('span.svelte-vyyb4r')

for artist in artist_list:
  print(artist)

但输出结果中包含一个带songs-list-row__badge类的span元素:

<Element 'span' class=('svelte-vyyb4r',)>
<Element 'span' class=('svelte-vyyb4r',)>
<Element 'span' class=('songs-list-row__badge', 'songs-list-row__badge--explicit', 'svelte-vyyb4r')>
<Element 'span' class=('svelte-vyyb4r',)>
<Element 'span' class=('svelte-vyyb4r',)>

我尝试使用remove()函数移除该元素,但报错:

for artist in artist_list.remove("songs-list-row__badge"):
    print(artist)

输出:

ValueError: list.remove(x): x not in list

请问该如何移除这个特定元素?


解决方案

方法1:筛选时直接排除目标元素(推荐)

不用先获取所有元素再过滤,直接用CSS选择器排除带songs-list-row__badge类的span,修改find的参数即可:

# 替换原代码中的artist_list行
artist_list = data.find('span.svelte-vyyb4r:not(.songs-list-row__badge)')

:not()是CSS伪类,会直接过滤掉带有指定类的元素,一步到位。

方法2:对已获取的列表进行过滤

如果已经拿到了artist_list,可以用列表推导式筛选掉包含目标类的元素:

# 在获取artist_list之后添加这行代码
artist_list = [elem for elem in artist_list if 'songs-list-row__badge' not in elem.classes]

这里通过检查每个元素的classes属性(包含所有类名的元组),排除掉带有目标类的元素。

方法3:正确使用remove()删除单个元素

你之前报错是因为remove()需要传入列表里存在的元素对象,而不是字符串类名。如果确定只有一个这样的元素,可以这样做:

# 先定位目标元素
target_elem = None
for elem in artist_list:
    if 'songs-list-row__badge' in elem.classes:
        target_elem = elem
        break
# 找到后移除
if target_elem:
    artist_list.remove(target_elem)

这种方法适合精准删除单个特定元素的场景,若存在多个同类元素,更推荐用方法2处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:30:39