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

如何使用BeautifulSoup获取HTML中所有指定类h3标签的文本?

解决多歌曲标题爬取问题

嘿,这问题很好解决!你当前代码里用的find()方法只会返回第一个匹配到的目标元素,所以只能拿到单个标题。要抓取所有符合条件的歌曲标题,只需要把find()换成find_all()就可以啦——这个方法会返回页面上所有匹配指定选择器的元素组成的列表,之后你遍历这个列表就能提取每一个标题的文本了。

给你修改后的完整代码参考:

# 先补上必要的导入(你原来的代码可能漏了BeautifulSoup的导入哦)
import requests
from bs4 import BeautifulSoup

page = requests.get(url) # 替换成你要爬取的目标URL
html = BeautifulSoup(page.text, "html.parser")
[h.extract() for h in html('script')]

# 用find_all获取所有匹配的h3元素
tracklist_elements = html.find_all("h3", class_="chart_row-content-title")

# 遍历元素列表,提取每个标题的文本(strip=True用来清理多余的空格换行)
all_song_titles = [elem.get_text(strip=True) for elem in tracklist_elements]

# 可以打印看看结果,或者保存到文件
for title in all_song_titles:
    print(title)

# 要是想保存到本地文件的话,可以加这段
# with open('song_titles.txt', 'w', encoding='utf-8') as f:
#     f.write('\n'.join(all_song_titles))

额外提两个小技巧:

  • get_text(strip=True)能帮你自动去掉标题文本前后的空格、换行符,让结果更整洁
  • 如果页面里的标题还有其他多余的格式(比如内嵌的小标签文本),可以先检查元素结构,再针对性地提取需要的部分

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:08:50