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

Selenium无法从span标签提取纯数字文本问题求助

解决Selenium提取亚马逊隐藏价格元素的数字问题

问题分析

核心问题在于:a-offscreen类的元素是亚马逊用于辅助功能的隐藏元素(视觉不可见),因此Selenium的.text属性无法获取内容(仅返回可见文本);而innerHTML会包含子元素的HTML结构,导致返回结果带多余标签。

解决方案

以下是几种可靠的提取数字16.98的方法:

方法1:使用textContent属性提取纯文本后处理

textContent会返回元素的所有文本内容(不受可见性影响),之后通过正则或字符串操作提取数字:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
import re

service = Service("C:\\Development\\chromedriver.exe")
driver = webdriver.Chrome(service=service)

driver.get("https://www.amazon.com/HB-UM43-%D7%A8%D7%9B%D7%96%D7%AA-Sabrent-USB-3-0/dp/B00JX1ZS5O/ref=d_ex_efse_dp_ps_d_sccl_2_13/134-8388945-8876241?pd_rd_w=PhytY&content-id=amzn1.sym.a33bdad7-13b2-4641-a8b3-d6f6ef5a7304&pf_rd_p=a33bdad7-13b2-4641-a8b3-d6f6ef5a7304&pf_rd_r=7R3T4DW86KG7CHFAJHJH&pd_rd_wg=fWhFq&pd_rd_r=5bc9d4df-38d2-4d93-aaee-c6e8e63dcbf4&pd_rd_i=B00JX1ZS5O&th=1")

price_element = driver.find_element(By.CLASS_NAME, "a-offscreen")
# 获取所有文本内容并去除首尾空白
full_text = price_element.get_attribute('textContent').strip()
# 用正则匹配小数格式的数字
price_num = re.search(r'\d+\.\d+', full_text).group()
print(price_num)  # 输出:16.98

driver.quit()

方法2:直接从innerHTML中提取数字

直接对innerHTML的结果用正则提取数字,无需依赖额外属性:

# 承接上述代码,替换处理部分
innerHTML = price_element.get_attribute('innerHTML')
price_num = re.search(r'\d+\.\d+', innerHTML).group()
print(price_num)  # 输出:16.98

方法3:通过JavaScript直接获取目标文本节点

利用JS精准访问元素的子文本节点,直接提取数字:

# 承接上述代码,替换处理部分
price_num = driver.execute_script("""
    const element = document.querySelector('.a-offscreen');
    // 获取第二个子节点(数字所在的文本节点)并去除空白
    return element.childNodes[1].textContent.trim();
""")
print(price_num)  # 输出:16.98

关键原理

  • .text属性:仅返回可见元素的文本,隐藏元素会返回None。
  • textContent属性:返回元素包含的所有文本内容(包括子元素和文本节点),不受可见性限制。
  • 正则表达式:\d+\.\d+可精准匹配带小数的价格数字,适配亚马逊价格格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 15:05:26