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

Selenium无法定位自定义属性及LinkedIn爬虫链接提取问题

解决LinkedIn爬取时的两个Selenium问题

问题1:定位左侧导航栏“People”按钮失败

直接通过自定义属性data-target-section-id定位即可,推荐用CSS选择器(比XPATH更简洁高效),同时建议配合显式等待确保元素加载完成,避免因元素未就绪导致的定位失败。

代码示例:

方法1:CSS选择器

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 等待元素可点击后再操作
people_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, '[data-target-section-id="PTFmMNSPSz2LQRzwynhRBQ=="]'))
)
people_btn.click()

方法2:XPATH

people_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.XPATH, '//*[@data-target-section-id="PTFmMNSPSz2LQRzwynhRBQ=="]'))
)
people_btn.click()

你之前用By.Link_text("People")无效,大概率是因为按钮文本存在隐藏字符、空格,或是该元素并非标准a标签,而自定义属性是稳定的唯一标识,定位成功率更高。

问题2:循环提取用户链接异常

核心问题是XPATH路径写法错误:你用的//*[contains(@href, 'miniProfileUrn')]是从整个文档根节点开始查找,因此每次循环都会匹配页面上第一个符合条件的元素。需要改成相对路径,用.//表示从当前遍历的users元素范围内查找子节点。

修正后的代码:

all_users = driver.find_elements(By.XPATH, "//*[contains(@class, 'entity-result__title-line entity-result__title-line--2-lines')]")

for user in all_users:
    print(user)
    # 用.//限定查找范围为当前user元素的子节点
    get_link = user.find_element(By.XPATH, ".//*[contains(@href, 'miniProfileUrn')]")
    print(get_link.get_attribute('href'))

修改后,每次循环都会从当前用户元素下提取对应链接,即可解决重复获取第一个用户链接的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 09:02:55