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

如何用Python和Selenium提取LinkedIn个人主页的经历信息?

提取LinkedIn职业经历信息到DataFrame的解决方案

LinkedIn会频繁更新页面元素类名,需使用更具鲁棒性的CSS选择器定位元素,以下是适配当前页面结构的实现方案:

完整代码

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
import pandas as pd

# 初始化浏览器驱动(根据你使用的浏览器调整,比如Chrome/Firefox)
driver = webdriver.Chrome()

# 访问目标LinkedIn职业经历页面(需先完成登录验证)
driver.get("https://www.linkedin.com/in/maxlvsq/details/experience/")

# 定位所有职业经历条目
jobs = driver.find_elements(By.CSS_SELECTOR, 'section#experience + div ul li.pvs-entity')

# 初始化存储数据的字典
exp = {
    'job': [],
    'company': [],
    'date': [],
    'location': [],
    'description': []
}

for job in jobs:
    # 提取职位名称
    try:
        job_title = job.find_element(By.CSS_SELECTOR, 'div.pvs-entity__title-wrapper span.t-bold span[aria-hidden="true"]').text
    except NoSuchElementException:
        job_title = '*missing value*'
    exp['job'].append(job_title)

    # 提取公司名称
    try:
        company_name = job.find_element(By.CSS_SELECTOR, 'div.pvs-entity__subtitle-wrapper span.t-normal span[aria-hidden="true"]').text
    except NoSuchElementException:
        company_name = '*missing value*'
    exp['company'].append(company_name)

    # 提取时间范围
    try:
        date_range = job.find_element(By.CSS_SELECTOR, 'span.pvs-entity__caption-wrapper').text
    except NoSuchElementException:
        date_range = '*missing value*'
    exp['date'].append(date_range)

    # 提取工作地点
    try:
        location = job.find_element(By.CSS_SELECTOR, 'span.pvs-entity__caption-wrapper + span').text
    except NoSuchElementException:
        location = '*missing value*'
    exp['location'].append(location)

    # 提取工作描述(若描述折叠则先点击展开)
    try:
        # 检查是否有展开按钮
        expand_btn = job.find_element(By.CSS_SELECTOR, 'button[aria-expanded="false"]')
        expand_btn.click()
    except NoSuchElementException:
        pass  # 描述已展开或无展开按钮

    try:
        description = job.find_element(By.CSS_SELECTOR, 'div.pvs-list__outer-container span[aria-hidden="true"]').text
    except NoSuchElementException:
        description = '*missing value*'
    exp['description'].append(description)

# 转换为DataFrame
df = pd.DataFrame(exp)
print(df)

# 关闭浏览器
driver.quit()

关键说明

  • 条目定位:使用section#experience + div ul li.pvs-entity定位所有职业经历,依赖页面结构层级而非易变的类名,稳定性更强。
  • 异常处理:每个字段都添加了异常捕获,避免因部分条目缺失信息导致程序崩溃。
  • 描述展开:自动检测并点击折叠的描述按钮,确保能提取完整内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 21:12:36