使用BeautifulSoup提取职位链接遇'NoneType'无get属性错误
解决Jobs.ch职位链接提取失败的问题
问题背景
已成功从https://www.jobs.ch/en/vacancies/?term=Data%20Analyst获取职位名称和公司信息,但提取职位链接时触发AttributeError,错误信息:
AttributeError: 'NoneType' object has no attribute 'get'
问题原因
job_elements是通过find_all("a", class_="...")直接获取到的<a>标签集合,你在循环中再次调用job_element.find('a', ...)会返回None——因为当前job_element本身就是目标<a>标签,内部不存在嵌套的同类型标签,调用get('href')自然报错。
修正代码
直接从job_element本身提取href属性即可,同时注意拼接完整域名(原href为相对路径):
import requests from bs4 import BeautifulSoup as bs url = 'https://www.jobs.ch/en/vacancies/?term=Data%20Analyst' page = requests.get(url) soup = bs(page.content, "html.parser") results = soup.find(class_="Div-sc-1cpunnt-0 ujqkk") job_elements = results.find_all("a", class_="Link__ExtendedRR6Link-sc-czsz28-1 jzwvjr Link-sc-czsz28-2 VacancyLink___StyledLink-sc-ufp08j-0 bzpUGN zoplL") for job_element in job_elements: title_element = job_element.find("span", class_="Span-sc-1ybanni-0 Text__span-sc-1lu7urs-12 Text-sc-1lu7urs-13 VacancySerpItem___StyledText-sc-ppntto-4 jpKTRn bbefum hSicAH") company_element = job_element.find("p", class_="P-sc-hyu5hk-0 Text__p2-sc-1lu7urs-10 Span-sc-1ybanni-0 Text__span-sc-1lu7urs-12 Text-sc-1lu7urs-13 cHnalP cTUsVs") # 直接从当前a标签获取href并拼接完整URL job_link = f"https://www.jobs.ch{job_element.get('href')}" print(title_element.text) print(company_element.text) print(job_link) print()
额外优化
为避免因个别标签缺失href导致报错,可添加默认值处理:
job_link = f"https://www.jobs.ch{job_element.get('href', '')}"
内容的提问来源于stack exchange,提问作者Luis Figueroa
相关产品推荐
相关产品推荐

