如何用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
相关产品推荐
相关产品推荐

