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

如何在已定位元素下查找子元素?解决Selenium重复获取首个href问题

遍历产品时无法正确获取每个产品的链接?

网页结构

<div class='product-pod-padding'>
 <a class='header product-pod--ie-fix' href='link1'></a>
 <div> SKU#1</div>
</div>
<div class='product-pod-padding'>
 <a class='header product-pod--ie-fix' href='link2'></a>
 <div> SKU#2</div>
</div>
<div class='product-pod-padding'>
 <a class='header product-pod--ie-fix' href='link3'></a>
 <div> SKU#3</div>
</div>

当前情况

遍历产品获取SKU时能得到预期结果:

products=driver.find_elements_by_xpath("//div[@class='product-pod-padding']")
for index, product in enumerate(products):    
   print(product.text)

输出:

SKU#1
SKU#2
SKU#3

但尝试获取每个产品的href时,所有产品都返回第一个商品的链接:

products=driver.find_elements_by_xpath("//div[@class='product-pod-padding']")
for index, product in enumerate(products):
   print(index)   
   print(product.text)
   url=product.find_element_by_xpath("//a[@class='header product-pod--ie-fix']").get_attribute('href')
   print(url)

输出:

0
SKU#1
link1
1
SKU#2
link1
2
SKU#3
link1

解决方法

问题出在XPath的路径写法上://a[@class='header product-pod--ie-fix']是从整个文档的根节点开始查找匹配元素,所以每次都会返回第一个符合条件的a标签。要改成相对路径,在当前product节点的范围内查找,只需要在XPath开头加上.:

修改后的代码

products=driver.find_elements_by_xpath("//div[@class='product-pod-padding']")
for index, product in enumerate(products):
   print(index)   
   print(product.text)
   # 相对路径查找当前product下的a标签
   url=product.find_element_by_xpath(".//a[@class='header product-pod--ie-fix']").get_attribute('href')
   print(url)

正确输出:

0
SKU#1
link1
1
SKU#2
link2
2
SKU#3
link3

另一种写法

也可以直接在初始XPath中同时定位div和内部的a标签,一次性获取所有信息:

# 直接定位每个product容器下的a标签
product_links = driver.find_elements_by_xpath("//div[@class='product-pod-padding']/a[@class='header product-pod--ie-fix']")
for index, link in enumerate(product_links):
    # 获取当前a标签所在容器的SKU文本
    sku = link.find_element_by_xpath("../div").text
    print(index)
    print(sku)
    print(link.get_attribute('href'))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:01:17