Как не выводить результат с IndexError?

Если все поля на сайте заполнены, то результат:

Login: c4actbe011
Name: Юля Баева
City: Тула
Birthdate: 1986-09-17

Но если чего-то нет, или страница не найдена (404), то ошибка:

IndexError: list index out of range

Нужно чтобы выводились только те поля, которые есть на сайте, например:

Login: live:remcoschuman
Name: Putin

Код:

import requests
from bs4 import BeautifulSoup
profile = requests.get(f'https://skypli.com/profile/live:remcoschuman')
profile_soup = BeautifulSoup(profile.content, 'lxml')
profile_info = profile_soup.findAll('div', {'class': 'profile-box__table-value'})

profile_name = profile_info[1].text.strip()
profile_city = profile_info[2].text.strip()
profile_birthdate_result = profile_info[4].text.strip()
profile_birthdate = profile_birthdate_result.replace("-",".")
print(f'Login: {username}\nName: {profile_name}\nCity: {profile_city}\nBirthdate: {profile_birthdate_result}')

Ответы (1 шт):

Автор решения: ПИТОНИСТ версия-3-8

Попробуйте так:

import requests
from bs4 import BeautifulSoup
profile = requests.get(f'https://skypli.com/profile/live:remcoschuman')
profile_soup = BeautifulSoup(profile.content, 'lxml')
profile_info = profile_soup.findAll('div', {'class': 'profile-box__table-value'})


profile_name = profile_city = profile_birthdate = 'No'
length=len(profile_info)
if length >= 2: profile_name = profile_info[1].text.strip()
if length >=3: profile_city = profile_info[2].text.strip()
if length >=5:
    profile_birthdate_result = profile_info[4].text.strip()
    profile_birthdate = profile_birthdate_result.replace("-",".")
print(f'Login: {username}\nName: {profile_name}\nCity: {profile_city}\nBirthdate: {profile_birthdate_result}')

Должно сработать.

→ Ссылка