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

如何用Python Selenium定位含换行符类名的LinkedIn元素?

解决LinkedIn爬虫中类名含换行/空格的定位问题

你用Python Selenium爬LinkedIn时遇到的问题很典型:元素ID动态变化,改用类名定位但类名带换行和多余空格,导致find_elements返回空列表。

为什么你的写法无效?

By.CLASS_NAME定位器只能接收单个类名,不能传入多个类名的组合,更不能带换行、多余空格这类浏览器渲染时会自动忽略的字符。页面元素的class属性里的换行和多空格,最终会被浏览器解析为单个空格分隔的多个类名,不是你写的那种带换行的字符串。

正确的解决方法

方法1:用CSS选择器(推荐)

提取几个关键的、不易变化的类名,用.连接多个类名,代表同时拥有这些类的元素。比如从你给出的类名里挑jobs-search-results__list-item和scaffold-layout__list-item这两个核心类:

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

# 等待元素加载完成(避免因页面未渲染完返回空)
job_list = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.CSS_SELECTOR, ".jobs-search-results__list-item.scaffold-layout__list-item"))
)

方法2:用XPATH定位

通过包含指定类名的方式匹配元素,同样可以忽略多余空格和换行:

job_list = WebDriverWait(driver, 10).until(
    EC.presence_of_all_elements_located((By.XPATH, "//div[contains(@class, 'jobs-search-results__list-item') and contains(@class, 'scaffold-layout__list-item')]"))
)

额外提醒

LinkedIn反爬机制严格,爬取时注意:

  • 不要频繁请求,适当加延迟
  • 尽量模拟真实用户操作(比如滚动页面、随机停顿)
  • 避免使用固定等待时间,优先用WebDriverWait等待元素加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 15:40:37