使用Python bs4爬取网页触发AttributeError,请求技术协助
问题解决:BeautifulSoup ResultSet 无find属性错误
错误原因
你代码里的核心问题是:jobs是soup.find_all()返回的ResultSet对象(即元素列表),它没有find方法。但你在for job in jobs:循环里,错误地用jobs.find()来查找子元素,这就触发了报错。正确的做法是用循环迭代出来的单个元素job来调用find方法。
修正后的代码
from bs4 import BeautifulSoup import requests html_text = requests.get('https://www.reed.co.uk/jobs/python-jobs').text soup = BeautifulSoup(html_text, 'lxml') jobs = soup.find_all('article', class_ = 'job-result-card') for job in jobs: # 用job(单个元素)替代jobs(元素列表)调用find company_elem = job.find('a', class_ = 'gtmJobListingPostedBy') company_name = company_elem.text.strip() if company_elem else '未找到公司名称' skills_elem = job.find('p', class_ = 'job-result-description__details') skills = skills_elem.text.strip() if skills_elem else '未找到技能信息' date_elem = job.find('div', class_ = 'job-result-heading__posted-by') published_date = date_elem.text.strip() if date_elem else '未找到发布日期' print('Company name:', company_name) print('Skills:', skills) print(published_date, '\n')
关键修改点
- 循环内所有
jobs.find()替换为job.find(),job是当前遍历到的单个职位卡片元素,支持find方法 - 增加了元素存在性判断,避免因页面结构变化、元素缺失导致的额外报错
内容的提问来源于stack exchange,提问作者Shonky
相关产品推荐
相关产品推荐

