Парсинг на Python. Вывести пустые ячейки, если отсутствует тег или класс

Цель - спарсить каталог компаний. Есть проблема: Не во всех карточках компаний есть теги и классы, в которых указаны почта и урл. В таком случае, карточку этой компании парсер пропускает целиком. Нужно, чтоб компания попадала в список в любом случае, а вместо недостающих данных была просто пустая ячейка или что-то типа "No data". Вот такой есть код:

def get_content(html):
soup = BeautifulSoup(html, 'lxml')
items = soup.find_all(class_="row p-3 p-md-4")
company = []

for item in items:
    try:
        links = item.find("span", class_="cart-company-lg__list-link text-body font-weight-400").find('a').get('href')
    except AttributeError:
        print('empty')
        continue

    try:
        mail = item.find("a", attrs={"target": "_blank"}).get_text()
    except AttributeError:
        print('empty')
        continue


    company.append(
        {
            "title":item.find(class_="cart-company-lg__title ui-title-inner").get_text(),
            "link":item.find("span", class_="cart-company-lg__list-link text-body font-weight-400").find('a').get('href'),
            "adres":item.find(class_="cart-company-lg__list-link").get_text(),
            "phone":item.find("a", class_="text-nowrap").attrs['href'],
            "mail":item.find("a", attrs={"target": "_blank"}).get_text(),
        }
    )


return company

def save_data(items, path):
with open(path, "w", newline="") as file:
    writer = csv.writer(file, delimiter=";")
    writer.writerow(["Name", "Link", "Adres", "Phone", "Mail"])
    for item in items:
        writer.writerow([item["title"], item["link"], item["adres"], item["phone"], item["mail"]])


def parser():
PAGINATION = input("Кол-во страниц: ")
PAGINATION = int(PAGINATION.strip())
html = get_html(URL)
if html.status_code == 200:
    companys = []
    for start_page in range(1, PAGINATION+1):
        print(f"Pasce page: {start_page}")
        html = get_html(URL, params={"start_page": start_page})
        companys.extend(get_content(html.text))
        save_data(companys, CSV)
    pass

else:
    print("Error")

parser()

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

Автор решения: Сергей Ш
for item in items:
    try:
        links = item.find("span", class_="cart-company-lg__list-link text-body font-weight-400").find('a').get('href')
    except AttributeError:
        links = 'No data'

    try:
        mail = item.find("a", attrs={"target": "_blank"}).get_text()
    except AttributeError:
        mail = 'No data'

    company.append(
        {
            "title":item.find(class_="cart-company-lg__title ui-title-inner").get_text(),
            "link": links,
            "adres":item.find(class_="cart-company-lg__list-link").get_text(),
            "phone":item.find("a", class_="text-nowrap").attrs['href'],
            "mail":mail,
        }
    )
return company
→ Ссылка