Python使用Selenium爬取Target网站无法获取UPC对应数字如何解决
问题原因
你当前使用的XPath仅匹配到了包含「UPC」文本的独立标签元素,Target平台的商品参数区普遍采用「标签文本+对应数值」的同级节点排版,UPC文本和数字分别属于两个相邻的同级元素,因此仅能获取到UPC字符串,无法拿到后续的数字内容。
解决方法
方案1:直接定位UPC对应的数字元素
通过XPath的following-sibling轴,定位到UPC标签元素的下一个同级元素,即可直接获取UPC数字:
from selenium.webdriver.common.by import By # 注意:Selenium 4.0+ 已废弃find_element_by_xpath写法,统一使用find_element传入定位方式 upc_num_elem = driver.find_element(By.XPATH, "//*[contains(normalize-space(text()), 'UPC')]/following-sibling::*[1]") upc_code = upc_num_elem.text.strip()
方案2:定位包含UPC和数字的完整父元素
如果需要获取同时包含UPC文本和数字的完整元素,可以向上定位到两者的共同父节点:
from selenium.webdriver.common.by import By upc_full_elem = driver.find_element(By.XPATH, "//*[contains(normalize-space(text()), 'UPC')]/parent::*") upc_full_content = upc_full_elem.text.strip() # 后续可以通过字符串处理提取数字:upc_code = upc_full_content.replace("UPC", "").strip()
注意事项
- 匹配文本时使用
normalize-space()可以忽略文本前后的空格、换行符,避免页面格式差异导致匹配失败 - 如果页面是动态加载的,建议在定位前添加显式等待,避免元素未加载完成导致定位报错
内容的提问来源于stack exchange,提问作者Brian Miller
相关产品推荐
相关产品推荐

