Dunaevlad
@Dunaevlad

Как добавить значение ошибки в словарь?

Всем привет!

Пишу парсер сайта, надо достать такую инфу, как почта, номер и т.д.
Я использую многопоточность и сразу выкачиваю всю инфу, пакую в zip(),
использую цикл и нужные значения подставляю к ключам.

Загвоздка в том, что не везде есть нужная информация и
возникает ошибка IndexError, так как искомое значение отсутвует.

Пример:
[<a class="socialMediaLink" href="https://www.facebook.com/eneo.asbl.namur" target="_blank"><i class="icon-facebook"></i></a>]
[]
[]
[]
[<a class="socialMediaLink" href="https://www.facebook.com/asbl.alias.vzw/" target="_blank"><i class="icon-facebook"></i></a>]


Что бы обходить разного рода ошибки, я использую try, но тогда пропадают данные!
Допустим, у одной фирмы есть все необходимые данные, у другой часть остуствует
и поэтому данные теряются.

Вот часть кода:
company_info = []
data = zip(names, addresses, telephones, emails, sites, socials)

        for name, address, telephone, email, site, social in data:
            try:
                company_info.append(
                    {
                        'Name': name[0].get_text(strip=True),
                        'Address': address[0].get_text(strip=True).replace('Adresse', ''),
                        'Telephone': telephone[0].get_text(),
                        'Email': decode_email(email[0].get('href').replace('/cdn-cgi/l/email-protection#', '')),
                        'Site': site[0].get('href'),
                        'Facebook': social[0].get("href")
                    }
                )

            except IndexError:
                pass


Можно ли задать условия, что если нужные данные отсутвуют,
записать в значение ключа, что-то типа "No available information".
Таким образом, данные не будут пропускаться.
  • Вопрос задан
  • 55 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
for name, address, telephone, email, site, social in data:
    item = dict()
    item['Name'] = name[0].get_text(strip=True) if name else ''
    ...
    company_info.append(item)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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