如何使用Selenium定位网页元素并准确提取目标文本内容
Selenium提取电商页面材质信息异常修复
问题复现
- 目标页面地址:
https://modernhousevn.com/collections/new-arrival/products/giuong-ngu-mh-21 - 初始实现代码:
driver = webdriver.Chrome() URL= 'https://modernhousevn.com/collections/new-arrival/products/giuong-ngu-mh-21' driver.get(URL) sleep(1) des = wait.until(EC.visibility_of_element_located((By.XPATH, "//strong[text()='Chất liệu :']/.."))).get_attribute('innerText') print(des)
- 预期输出结果:
['Khung : Khung Gỗ thông - Vạt giường gỗ thông', 'Da PU hoặc vải bố cao cấp nhập khẩu', 'Mousse : D40/35 theo tiêu chuẩn xuất khẩu'] - 对应页面元素位置参考:

故障原因
原有XPath仅定位到「Chất liệu :」文本的直接父节点,该节点仅包含标题文本,未覆盖后续3条材质说明的列表项;直接取innerText未做内容拆分、空白字符清洗,无法得到结构化的目标列表。
修复方案
调整定位逻辑:先通过材质标题向上查找承载全部说明内容的外层容器,再单独提取容器下所有列表项的文本,过滤空值、清除多余空白即可得到目标结果,可直接运行的修复代码如下:
from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By driver = webdriver.Chrome() URL = 'https://modernhousevn.com/collections/new-arrival/products/giuong-ngu-mh-21' driver.get(URL) wait = WebDriverWait(driver, 10) # 定位材质板块外层公共容器 material_container = wait.until(EC.visibility_of_element_located( (By.XPATH, "//strong[normalize-space(text())='Chất liệu :']/ancestor::div[contains(@class, 'product-description')]") )) # 提取所有材质条目并做格式清洗 material_list = [ item.text.strip() for item in material_container.find_elements(By.TAG_NAME, 'li') if item.text.strip() ] print(material_list)
运行代码后将直接输出符合预期的结构化材质列表。
内容的提问来源于stack exchange,提问作者astonle
相关产品推荐
相关产品推荐

