Python Selenium如何提取元素id或class属性中的指定字符串片段
Selenium提取id属性中指定数字段的实现方法
完全可以提取class、id、name这类元素属性中的指定内容,针对你提到的id格式为number_15位数字的场景,可按以下方法实现:
- 定位元素:用CSS属性前缀选择器
div[id^="number_"],直接匹配所有id以number_开头的div元素,无需额外过滤 - 提取属性:遍历所有匹配元素,获取id属性值后,用字符串分割或者正则提取后缀的15位数字
- 结果存储:把提取到的数字统一存入列表即可
from selenium import webdriver from selenium.webdriver.common.by import By import re # 初始化浏览器驱动,此处以Chrome为例 driver = webdriver.Chrome() # 打开目标站点页面 driver.get("替换为你的目标页面URL") # 方案1:规则固定时用字符串分割,实现最简单 number_list = [] elements = driver.find_elements(By.CSS_SELECTOR, 'div[id^="number_"]') for ele in elements: ele_id = ele.get_attribute("id") # 按下划线分割后取第二段即为数字段 target_num = ele_id.split("_")[1] number_list.append(target_num) # 方案2:正则匹配,容错性更高,避免特殊格式报错 number_list = [] elements = driver.find_elements(By.CSS_SELECTOR, 'div[id^="number_"]') for ele in elements: ele_id = ele.get_attribute("id") # 匹配number_后的15位纯数字 match_result = re.search(r"number_(\d{15})", ele_id) if match_result: target_num = match_result.group(1) number_list.append(target_num) # 验证结果 print(number_list) # 关闭浏览器 driver.quit()
如果需要提取class、name属性中的对应内容,逻辑完全一致,仅需要将
get_attribute("id")替换为对应属性名,再调整分割或正则匹配规则即可。
内容的提问来源于stack exchange,提问作者Aeternus
相关产品推荐
相关产品推荐

