Всем привет!
Пишу парсер сайта, надо достать такую инфу, как почта, номер и т.д.
Я использую многопоточность и сразу выкачиваю всю инфу, пакую в
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".
Таким образом, данные не будут пропускаться.