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

求助:使用BeautifulSoup无法获取class=info的p标签下span数据

解决BeautifulSoup无法获取指定class下span标签数据的问题

Hey,我帮你看了下你的代码,发现几个小问题导致你没法拿到想要的数据,咱们一步步来解决:

代码里的问题点

  • 关键字冲突错误:你写的attrs={class:'info'}里,class是Python的保留关键字,不能直接作为字典的键使用,这会直接触发语法错误。
  • 未提取文本内容:你的代码最后只是打印了span标签对象的列表,没有提取标签里的文本,更没处理成你想要的逗号分隔格式。

修正后的完整代码

from bs4 import BeautifulSoup

html = """
<p class="info">
<span>Kranji Mile Day simulcast races, Kranji Racecourse, SIN</span>
<span>Class 3 Handicap - 1200M TURF</span>
<span>Saturday, 26 May 2018</span>
<span>Race 1, 5:15 PM</span>
</p>
"""
soup = BeautifulSoup(html, "html.parser")
# 用class_参数避开Python关键字,或者也可以写attrs={'class':'info'}
info_paragraph = soup.find('p', class_='info')
# 提取所有span的文本,strip()移除前后多余的换行和空格
span_contents = [span.get_text(strip=True) for span in info_paragraph.find_all("span")]
# 处理第二个span里的'-',替换成逗号分隔
span_contents[1] = span_contents[1].replace(' - ', ', ')
# 把所有内容用逗号拼接起来
final_result = ', '.join(span_contents)
# 可选:把"5:15 PM"改成"5:15PM"去掉空格
final_result = final_result.replace(' PM', 'PM')
print(final_result)

输出结果

运行上面的代码后,会得到你期望的格式:

Kranji Mile Day simulcast races, Kranji Racecourse, SIN, Class 3 Handicap, 1200M TURF, Saturday, 26 May 2018, Race 1, 5:15PM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:07:44