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

使用Selenium爬取LinkedIn职位时无法获取span标签文本

LinkedIn职位爬取:span标签文本获取失败的解决办法

核心问题

你这段代码的关键错误是:find_elements(By.TAG_NAME,"span")返回的是元素列表,列表本身没有.text属性,所以直接调用会导致company_details返回None。而你获取职位标题用的是find_element(单数),返回单个元素,所以.text能正常工作。

修正方案

方案1:直接定位单个span元素

调整XPATH,直接定位到li下的目标span节点(假设文本在第一个span里):

company_details = wd.find_element(By.XPATH,"//div[@class='mt5mb2']/li[1]/span").text
if " · " in company_details:
    company_size = company_details.split(" · ")[0]
    company_industry = company_details.split(" · ")[1]

方案2:遍历span列表拼接文本

如果li下有多个span,需要遍历所有span元素拼接文本:

span_list = wd.find_element(By.XPATH,"//div[@class='mt5mb2']/li[1]").find_elements(By.TAG_NAME,"span")
company_details = "".join([span.text for span in span_list])
if " · " in company_details:
    company_size = company_details.split(" · ")[0]
    company_industry = company_details.split(" · ")[1]

额外优化建议

  • LinkedIn页面是动态加载的,建议加显式等待确保元素加载完成,避免因元素未加载导致的获取失败:
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    # 最长等待10秒,直到目标li元素出现
    target_li = WebDriverWait(wd, 10).until(
        EC.presence_of_element_located((By.XPATH, "//div[@class='mt5mb2']/li[1]"))
    )
    company_details = target_li.find_element(By.TAG_NAME,"span").text
    
  • 如果元素是隐藏状态,.text可能拿不到内容,可以尝试用get_attribute("textContent")替代:
    company_details = target_li.find_element(By.TAG_NAME,"span").get_attribute("textContent")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 17:42:16