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

Selenium Python:如何定位LinkedIn页面深层嵌套的目标span元素

解决方案:通过父元素限定范围精准定位目标span

你可以直接利用XPath或CSS选择器,先定位到包含姓名的父div,再在其范围内查找目标span,这样就能过滤掉页面上其他无关的aria-hidden=true元素。

具体实现代码

以LinkedIn搜索结果页面的典型结构为例(你可以根据实际页面结构调整选择器):

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

# 初始化驱动(省略浏览器配置等代码)
driver = webdriver.Chrome()

# 用XPath定位父div下的目标span:父div含特定class,子span满足aria-hidden=true
name_spans = driver.find_elements(By.XPATH, "//div[contains(@class, 'entity-result__title')]/span[@aria-hidden='true']")

# 遍历输出索引和姓名
for idx, span in enumerate(name_spans, start=1):
    print(f"索引: {idx}")
    print(f"姓名: {span.text}")
    # 如需获取span的其他属性,比如id、data前缀属性
    # print(f"span的id属性: {span.get_attribute('id')}")

关键思路说明

  • 避免全局遍历所有span:之前的方法会抓取页面上所有aria-hidden=true的span,包括图标、导航文本等无关元素,直接导致索引混乱。
  • 利用父元素的稳定特征:LinkedIn的姓名元素通常嵌套在具有特定class/属性的父容器中(比如搜索结果里的entity-result__title类div),通过选择器限定父元素范围,就能精准锁定目标span。
  • 灵活调整选择器:如果页面结构更新,你可以用浏览器F12开发者工具,右键目标姓名span→检查,查看其父级元素的稳定特征(比如class前缀、role属性等),修改XPath/CSS选择器即可。

比如如果父div的特征是role='listitem',可以把XPath改成:

name_spans = driver.find_elements(By.XPATH, "//div[@role='listitem']//span[@aria-hidden='true' and normalize-space(text())!='']")

也可以用CSS选择器实现同样效果:

name_spans = driver.find_elements(By.CSS_SELECTOR, "div.entity-result__title span[aria-hidden='true']")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:05:34