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

