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

如何使用BeautifulSoup提取Claim date对应的日期文本?

解决方法:精准定位目标日期文本

我明白你的困扰——页面里重复的_ngcontent-c2属性和text-primary类确实会干扰普通的选择器,导致你拿不到正确的日期。咱们换个思路,结合标签的文本内容+相邻元素关系来精准定位,就能解决问题了。

首先,先回顾下你要处理的HTML结构:

<div _ngcontent-c2=""><span _ngcontent-c2="" class="text-secondary">Claim date: </span><span _ngcontent-c2="" class="text-primary">26 September, 2018</span></div>

核心思路是:先找到明确带有Claim date:文本的那个<span>,再取它的下一个兄弟元素(就是存日期的那个span)。下面是具体的Python代码示例(用BeautifulSoup实现):

from bs4 import BeautifulSoup

# 你的HTML内容
html_content = """<div _ngcontent-c2=""><span _ngcontent-c2="" class="text-secondary">Claim date: </span><span _ngcontent-c2="" class="text-primary">26 September, 2018</span></div>"""
soup = BeautifulSoup(html_content, 'html.parser')

# 1. 精准定位带有"Claim date: "文本的text-secondary标签
claim_label = soup.find('span', class_='text-secondary', string='Claim date: ')

# 2. 如果找到这个标签,就获取它的下一个兄弟元素的文本
if claim_label:
    target_date = claim_label.find_next_sibling('span', class_='text-primary').get_text(strip=True)
    print(target_date)  # 输出结果:26 September, 2018

为什么这个方法能生效?

之前你用find_next_sibling失败,大概率是因为没有先锁定唯一标识的前置标签——直接找text-primary会匹配页面里所有同类标签,而先通过Claim date:文本锁定对应的前置span,再找它的兄弟节点,就能确保拿到的是和目标标签绑定的日期。

如果页面里的Claim date:文本可能有细微差异(比如偶尔少个空格),可以把string参数改成更灵活的lambda表达式:

claim_label = soup.find('span', class_='text-secondary', string=lambda x: x and 'Claim date:' in x.strip())

这样就能兼容文本前后的空格变化啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 13:24:05