#python #web-scraping
#python #веб-очистка
Вопрос:
Я пытался очистить веб-сайт indeed как часть проектной работы. Я столкнулся с ‘NoneType’ объект не имеет атрибута ‘text’ при попытке получить резюме вакансии.
У кого-нибудь есть решение?
def extract(page):
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'}
url = f'https://ae.indeed.com/jobs?q=data analystamp;l=dubaiamp;start={page}'
r = requests.get(url, headers)
soup = bs(r.content, 'html.parser')
return soup
def transform(soup):
div = soup.find_all('div', class_ ='jobsearch-SerpJobCard')
for item in div:
title = item.find('a').text.strip()
company = item.find('span', class_ = 'company').text.strip()
summary = item.find(name='div',attrs={'class':'summary'}).text.strip()
jobs = {'title': title,
'company': company,
'summary': summary}
joblist.append(jobs)
return
joblist = []
c = extract(10)
transform(c)
print(joblist)
Сообщение об ошибке:
AttributeError Traceback (most recent call last)
<ipython-input-65-eefd76c3693a> in <module>
24 joblist = []
25 c = extract(10)
---> 26 transform(c)
27 print(joblist)
<ipython-input-65-eefd76c3693a> in transform(soup)
11 title = item.find('a').text.strip()
12 company = item.find('span', class_ = 'company').text.strip()
---> 13 summary = item.find(name='div',attrs={'class':'summary'}).text.strip()
14 # summary = item.find(name='li',attrs={'style':'margin-bottom:0px;'}).text
15 # for sum in summary:
AttributeError: 'NoneType' object has no attribute 'text'
Комментарии:
1. Ну, вы ожидаете
item.find(name='div',attrs={'class':'summary'})
, что всегда что-то возвращать? Что делать, если нет резюме?2. элемент не находит div, который class = summary, поэтому он возвращает объект NoneType
3. @OneCricketeer Спасибо за этот вопрос. Это помогло мне.
Ответ №1:
Я просто изменил код с помощью try, за исключением block. Это сработало нормально.
try:
summary = item.find(name='div',attrs={'class':'summary'}).text.strip()
except:
summary = 'None'