@ParnishkaSPB

Выдает ошибку при парсинге страницы, как исправить?

Есть код:
responce = requests.get('https://101hotels.com/recreation/russia/sankt-pete...').text
html = BS(responce, 'html.parser')
items = html.find_all('li', class_='item')

d = []

for item in items:

d.append({
'title': item.find('div', class_='item-name').text,
'address': item.find('span', class_='item-address'),
'p': item.find('div', class_='item-description')
})
print (d)

Когда нажимаю выполнить, пишет ошибку: 'title': item.find('div', class_='item-name').text, AttributeError: 'NoneType' object has no attribute 'text', хотя в классе есть текст, но он почему-то его не видит, как это исправить?
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Нужно либо делать проверку, либо оборачивать код в try...except:
for item in items:
	try:
		d.append({
		'title': item.find('div', class_='item-name').text,
		'address': item.find('span', class_='item-address').text,
		'p': item.find('div', class_='item-description').text.replace('\xa0','')
		})
	except:
		pass

На странице присутствует пустой тег li с классом item. Скорее всего в данный пустой тег встраивается рекламный блок, но так как adblock блокирует рекламу, то блок получается пустой, вот и получается исключение.
5ede2176ede6a830455430.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы