对所有招聘信息进行https://www.work.ua/en/jobs/?ss=1抓取时,我得到**AttributeError:“NoneType”对象没有属性“text”**错误。
import requests
from bs4 import BeautifulSoup
url = 'https://www.work.ua/en/jobs/?ss=1'
# Get the webpage
page = requests.get(url)
# Create a BeautifulSoup object
soup = BeautifulSoup(page.text, 'html.parser')
# Pull all text from the class
jobs = soup.find_all(class_='card card-hover card-visited wordwrap job-link js-hot-block')
# Pull text from all instances of <a> tag within the class
for job in jobs:
job_title = job.find(class_='add-top-xs').text
job_city = job.find(class_='add-top-xs').next_sibling.text
job_salary = job.find(class_='salary').text
job_url = job.find('a')['href']
print('Job title: {}\nCity: {}\nSalary: {}\nURL: {}\n'.format(job_title, job_city, job_salary))
网络搜索表明,这可能是由于HTML页面中缺少或不正确的标记,但这超出了我的技能水平。
2条答案
按热度按时间hi3rlvi21#
请理解,在一个表达方式,如
初始部分可以返回
None
。而且
None
没有.text
属性。定义辅助对象:
现在,您可以将其改写为:
更一般地说,你想更好地理解这些页面是如何结构化的,也许
add-top-xs
类总是出现在感兴趣的元素上,或者它是可选的,你的代码必须学会适应。打印出soup.prettify()可以帮助您理解格式不佳的输入HTML。
wi3ka0sx2#
说明:
您收到AttributeError异常。您可能在对象中查找“text”属性,但此属性不存在。
错误位于以下部分之一:
或
你看到了吗?你正在从一个类中请求一个.text值...可能你在HTML页面中看到的这些属性之一没有text属性。
你的问题就在这里
页面没有薪资等级
解决方案:
使用try except -类似于: