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

如何获取LinkedIn经历/教育日期范围的XPath?(Selenium爬虫)

解决LinkedIn工作经历日期抓取的问题

首先,非常理解你的困惑——明明职位和公司能顺利抓到,偏偏日期部分卡壳,尤其是LinkedIn的动态DOM结构总是让人头疼!

先说说你之前XPath的问题所在:

  • 动态Ember ID不可靠:你用的ember654或者197582093这类ID是LinkedIn动态生成的,每次刷新页面都会变化,所以用固定ID或者匹配ID开头的方式完全行不通,下次加载页面就会失效。
  • Class定位不够精准:你写的pv-entity__date-range t-14 t-black--light t-normal是日期范围的父容器class,但实际的日期文本是在它内部的子元素里,直接取父元素的text()可能拿不到正确内容。

可行的解决方案

LinkedIn的工作经历条目通常用li.pv-entity__position-group-pager包裹,每个条目里的日期文本藏在span.pv-entity__date-range-text元素中。我们可以先定位所有工作经历条目,再在每个条目内精准抓取日期,这样就能轻松拿到前两份工作的日期内容:

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

# 初始化浏览器(假设你已完成登录流程)
driver = webdriver.Chrome()
driver.get("你的LinkedIn个人主页URL")

# 定位所有工作经历条目
job_entries = driver.find_elements(By.XPATH, '//li[contains(@class, "pv-entity__position-group-pager")]')

# 获取前两份工作的日期文本
for idx, entry in enumerate(job_entries[:2], 1):
    # 注意XPath开头的点号,表示在当前条目内查找(相对路径)
    date_element = entry.find_element(By.XPATH, './/span[contains(@class, "pv-entity__date-range-text")]')
    period_text = date_element.text
    print(f"第{idx}份工作日期:{period_text}")

# 后续你可以自行拆分起始/结束日期,比如用split处理:
# start_date, end_date = period_text.split(" - ")

额外提醒

  1. LinkedIn的DOM结构可能会不定期更新,如果以后这个XPath失效了,记得打开浏览器开发者工具(F12)重新查看元素的class和层级结构。
  2. 作为个人爱好项目,注意控制请求频率,避免触发LinkedIn的反爬机制导致账号受限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:30:05