Выдает все ссылки сайта, как сделать так, чтобы выдавалась первая?
link = soup.findAll('div', attrs={'class': 'item-title text-short'})
for div in link:
print(div.find('a')['href'])
Ошибка
print(div.find('a')['href'])
TypeError: 'NoneType' object is not subscriptable
Метод div.find('a')
вернул None
, т.к. тег a
не был найден, соответственно, None['href']
и вызвал ошибку в вопросе.
Могу предложить проверку:
for div in link:
a = div.find('a')
if a:
print(a['href'])
Или альтернативную проверку:
for div in link:
a = div.find('a')
if not a:
continue
print(a['href'])
Для сложного поиска я бы лучше css селекторы использовал
soup.select('div.item-title.text-short a')
Данный запрос вернет список всех элементов a, которые находятся внутри тега div с классами item-title и text-short. Далее просто берем первый элемент - это и будет первая ссылка.
А еще лучше не искать нужный элемент по номеру, а задать точное условие по классу или id. Это не сильно усложнит css селекор, зато такой запрос будет более устойчив к изменениям страницы
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть простая html страница с одной кнопкойПри каждом нажатии будет генерироваться список с цифрами
Есть база даных с координатами автомобиляБаза обновляется каждую секунду