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

如何在Selenium Python中通过父元素获取HREF链接列表?

通过父元素获取去重HREF链接的解决方案

1. 修正XPath语法错误

你原代码里的XPath存在语法问题:缺少闭合的方括号]和引号,且使用了find_element(仅返回首个匹配元素),需改成find_elements来获取所有符合条件的链接元素。

正确的XPath表达式:

//div[@data-testid="card-container"]//a[@href]

2. 获取链接并实现去重

以下是完整的可运行代码,同时实现限定父元素范围抓取和去重两个需求:

from selenium import webdriver
from selenium.webdriver.common.by import By

# 初始化浏览器并打开目标网站
driver = webdriver.Chrome()
driver.get("你的目标网站链接")

# 抓取父元素下所有带href的a标签
target_links = driver.find_elements(By.XPATH, '//div[@data-testid="card-container"]//a[@href]')

# 方式1:用集合快速去重(不保留原顺序)
unique_links = list({link.get_attribute("href") for link in target_links})

# 方式2:遍历列表去重(保留链接出现的原始顺序)
unique_links_ordered = []
for link in target_links:
    href = link.get_attribute("href")
    if href not in unique_links_ordered:
        unique_links_ordered.append(href)

# 输出结果
print("去重后的链接:", unique_links_ordered)

# 关闭浏览器
driver.quit()

关键说明

  • 通过div[@data-testid="card-container"]限定抓取范围,只获取该父元素下的链接,从根源减少无关重复项。
  • 集合去重是最高效的方式,但会打乱链接的原始顺序;若需保留顺序,选择第二种遍历列表的方式。
  • 调用get_attribute("href")可获取完整的链接地址,避免仅获取相对路径导致的重复判断误差。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:01:00