解决LinkedIn职位爬虫报错:'NoneType' object has no attribute 'text'
LinkedIn职位爬虫解析报错解决
你遇到的'NoneType' object has no attribute 'text'错误,核心出在两个点,直接说问题和修正方法:
问题1:链接提取逻辑完全错误
你写的job.find('href',class_='xxx')是错的——href是<a>标签的属性,不是标签名。而且职位链接存在<a>标签的href属性里,根本不需要取.text。
结合你附的截图,正确做法是先找到带base-card__full-link类的<a>标签,再提取它的href属性。
问题2:没处理元素找不到的情况
如果页面里有职位卡片缺失标题、公司名或链接,find()会返回None,这时直接调用.text就会触发报错。必须先判断元素是否存在,再执行后续操作。
修正后的代码
page_source = BeautifulSoup(driver.page_source, 'lxml') job_card = page_source.find_all('div', class_='base-card relative w-full hover:no-underline focus:no-underline base-card--link base-search-card base-search-card--link job-search-card') for job in job_card: # 处理职位标题 title_elem = job.find('h3', class_='base-search-card__title') job_title = title_elem.text.replace(' ', '') if title_elem else '无标题' # 处理公司名称 company_elem = job.find('h4', class_='base-search-card__subtitle') job_company_name = company_elem.text.replace(' ', '') if company_elem else '无公司名' # 处理职位链接 link_elem = job.find('a', class_='base-card__full-link absolute top-0 right-0 bottom-0 left-0 p-0 z-[2]') job_link_post = link_elem['href'] if link_elem else '无链接' print(f'Title = {job_title}\n' f'Company Name = {job_company_name}\n' f'Job Link = {job_link_post}\n')
额外提示
- LinkedIn有反爬机制,爬取时记得加随机延迟,避免账号受限。
- 可以用
select_one()替代find(),语法更贴近CSS选择器,比如job.select_one('h3.base-search-card__title'),写法更简洁。
内容的提问来源于stack exchange,提问作者Tejashwa Tiwari
相关产品推荐
相关产品推荐

