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

Python Selenium:根据span文本获取同级链接的实现求助

根据Span文本匹配获取对应链接

方法1:直接用XPath正则匹配(现代浏览器支持)

直接在XPath中集成文本匹配规则,精准定位符合条件的<span>,再获取其对应的前置<a>标签:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 匹配文本为「数字+A」格式的span,获取对应前置链接
target_links = [
    elem.get_attribute("href")
    for elem in WebDriverWait(driver, 30).until(
        EC.visibility_of_all_elements_located(
            (By.XPATH, "//span[contains(@class, 'class_name') and matches(text(), '^\\d+A$')]/preceding-sibling::a[@href][1]")
        )
    )
]
  • matches(text(), '^\d+A$'):XPath 2.0正则语法,确保span文本是纯数字加A的格式(如00A、01A),若允许文本前后有空白,可调整为^\s*\d+A\s*$
  • preceding-sibling::a[@href][1]:取当前span的最近一个前置a标签,避免匹配到更早的无关链接

方法2:Python正则二次筛选(全环境兼容)

若环境不支持XPath正则,可先获取所有span与对应链接的配对,再用Python正则做过滤:

import re
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 获取所有目标span元素
spans = WebDriverWait(driver, 30).until(
    EC.visibility_of_all_elements_located((By.XPATH, "//span[contains(@class, 'class_name')]"))
)

target_links = []
# 定义「数字+A」的匹配规则
match_pattern = re.compile(r'^\d+A$')

for span in spans:
    clean_text = span.text.strip()
    if match_pattern.match(clean_text):
        # 获取当前span对应的前置链接
        link_element = span.find_element(By.XPATH, "./preceding-sibling::a[@href][1]")
        target_links.append(link_element.get_attribute("href"))
  • 先批量获取所有目标span,再用Python的re模块做正则校验,兼容性更强
  • ./preceding-sibling::a[@href][1]:通过.限定当前节点范围,确保只匹配当前span的前置链接

补充:获取所有Span文本的方法

如果需要先导出所有span文本做检查,可使用以下代码:

spans = WebDriverWait(driver, 30).until(
    EC.visibility_of_all_elements_located((By.XPATH, "//span[contains(@class, 'class_name')]"))
)
all_span_texts = [span.text.strip() for span in spans]
print(all_span_texts)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 06:04:54