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

如何用Selenium Python获取标签后的文本(如电话/传真号码)?

问题描述

给定无唯一标识包裹号码的HTML结构:

<p>
<label>Phone Numbers:</label>
<br>
<label>Voice Number:</label>
" (321) 456-7890"
<br>
<label>Fax Number:</label>
" (123) 456-7890"
</p>

规则说明:

  • 若存在电话和/或传真号码,则必存在“Phone Numbers:”标签;
  • 若号码不存在,对应标签也不会出现;
  • 若号码存在,对应标签必存在,但号码内容会变化。

已通过以下代码定位到对应标签,但不知道如何获取标签后的号码文本:

driver.find_element(By.XPATH, '//label[text() = "Voice Number:"]')
driver.find_element(By.XPATH, '//label[text() = "Fax Number:"]')

解决方案

下面提供几种可行的实现方式:

方法1:XPath直接定位同级文本节点

利用XPath的following-sibling语法,直接定位标签后的第一个文本节点,提取内容后清理多余字符:

# 获取Voice Number
voice_label = driver.find_element(By.XPATH, '//label[text() = "Voice Number:"]')
voice_number = voice_label.find_element(By.XPATH, './following-sibling::text()[1]').get_attribute('textContent').strip().strip('"')

# 获取Fax Number
fax_label = driver.find_element(By.XPATH, '//label[text() = "Fax Number:"]')
fax_number = fax_label.find_element(By.XPATH, './following-sibling::text()[1]').get_attribute('textContent').strip().strip('"')

方法2:父容器文本分割提取

如果XPath文本节点定位有兼容性问题,可以先获取包含所有号码的<p>容器文本,再通过标签分割提取:

# 找到包含所有号码的父容器
phone_container = driver.find_element(By.XPATH, '//label[text() = "Phone Numbers:"]/parent::p')
full_text = phone_container.text

# 提取Voice Number
if 'Voice Number:' in full_text:
    voice_number = full_text.split('Voice Number:')[1].split('\n')[0].strip().strip('"')

# 提取Fax Number
if 'Fax Number:' in full_text:
    fax_number = full_text.split('Fax Number:')[1].split('\n')[0].strip().strip('"')

方法3:执行JavaScript获取相邻文本

通过JS代码直接获取标签的下一个兄弟文本节点内容:

# 获取Voice Number
voice_label = driver.find_element(By.XPATH, '//label[text() = "Voice Number:"]')
voice_number = driver.execute_script('return arguments[0].nextSibling.textContent;', voice_label).strip().strip('"')

# 获取Fax Number
fax_label = driver.find_element(By.XPATH, '//label[text() = "Fax Number:"]')
fax_number = driver.execute_script('return arguments[0].nextSibling.textContent;', fax_label).strip().strip('"')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:42:34