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

Python如何从Selenium抓取的HTML中同时提取label文本及对应id

实现方案

方法1:直接使用re.findall(无需额外函数)

re.findall本身支持多分组匹配,当正则表达式中存在多个捕获组时,会自动返回由各组匹配结果组成的元组列表,刚好可以满足同时提取id属性和标签文本的需求。

注意:你原正则的闭合标签写法<?label>存在错误,label的标准闭合标签是</label>,需要先调整这部分逻辑。

示例代码如下:

import re
# 正则同时捕获id属性值和标签文本,兼容无id属性的label标签
var1 = re.findall(r'<label\s*(?:.*?\sid="([^"]+)")?.*?>(.+?)<\/label>', html_code, re.S)
  • 规则说明:
    • 第一个捕获组([^"]+)匹配id属性双引号包裹的内容
    • 外层加?适配没有id属性的label标签,无id时对应位置返回None
    • re.S修饰符让.可以匹配换行符,避免标签跨行时匹配失败
  • 返回结果格式示例:[("username_label", "用户名"), ("password_label", "密码"), (None, "无id的标签文本")]

你可以直接遍历结果分别取值:

for label_id, label_text in var1:
    print(f"标签id:{label_id},标签文本:{label_text}")

方法2:更稳定的HTML解析方案(推荐)

正则匹配HTML很容易受属性顺序、引号类型(单引号/无引号)、标签嵌套等情况影响匹配失败,如果你对稳定性要求高,建议用BeautifulSoup解析:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_code, "html.parser")
result = []
for label_tag in soup.find_all("label"):
    label_id = label_tag.get("id")
    label_text = label_tag.get_text(strip=True)
    result.append( (label_id, label_text) )

该方案不需要处理正则的各种边界情况,适配性更强。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:24:04