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

BeautifulSoup正则匹配动态class名获取a标签内容失效问题

问题产生原因
  • 正则匹配规则逻辑写反:目标a标签的class值结构为「动态变化前缀 + 固定后缀lTitleonContext」,你写的正则^TitleonContext.*要求class值以TitleonContext开头,和实际属性值结构完全不符,无法命中元素。
  • 正则匹配的目标片段有误:实际class的固定后缀是lTitleonContext,你写的匹配片段漏了开头的l,就算调整匹配顺序也无法命中。
  • 输出逻辑有问题:就算成功匹配到元素,直接print(title)输出的是整个a标签的HTML源码,不是你需要的标签内部文本内容。
修正方案

写法1:修正正则匹配规则

import re
# 正则调整为匹配以固定片段lTitleonContext结尾的class属性
titles = soup.find_all("a", attrs={"class": re.compile(r'lTitleonContext$')})

for title in titles:
    # 调用get_text提取标签内文本,strip()清除前后多余的空格、换行
    print(title.get_text(strip=True))

写法2:无需正则的lambda匹配(更简洁)

利用BeautifulSoup的属性筛选能力,直接判断class属性是否包含固定片段,不需要导入re模块:

titles = soup.find_all("a", class_=lambda class_val: class_val and "lTitleonContext" in class_val)

for title in titles:
    print(title.get_text(strip=True))

运行上述代码即可正常输出Title 0、Title 1、Title 2这类目标文本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 09:42:24