with ThreadPoolExecutor(15) as executor:
# используем map сразу для всех 15 обектов(сначала получаем 15 ссылок, затем 15 распарсенных страниц и т.д.)
r = list(executor.map(requests.get, links)) # get unparsed pages (we will get 15 response)
soup = list(executor.map(lambda x: BeautifulSoup(x.content, 'html.parser'), r)) # get parsed pages
socials = list(executor.map(lambda x: x.find_all('a', class_='socialMediaLink'), soup))
for social in socials:
if social:
print(social)
else:
print('False')
Результат:
[<a class="socialMediaLink" href="https://www.facebook.com/UNESSA.asbl" target="_blank"><i class="icon-facebook"></i></a>, <a class="socialMediaLink" href="https://twitter.com/unessabe" target="_blank"><i class="icon-twitter"></i></a>, <a class="socialMediaLink" href="https://www.linkedin.com/company/unessa-asbl/?viewAsMember=true" target="_blank"><i class="icon-linkedin"></i></a>]
[]
[<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>]
[<a class="socialMediaLink" href="https://www.facebook.com/groups/131018037914/" target="_blank"><i class="icon-facebook"></i></a>]
[<a class="socialMediaLink" href="https://www.facebook.com/urbagora?fref=ts" target="_blank"><i class="icon-facebook"></i></a>, <a class="socialMediaLink" href="https://twitter.com/urbAgora" target="_blank"><i class="icon-twitter"></i></a>]
[<a class="socialMediaLink" href="https://www.facebook.com/leuven2030/?ref=br_rs" target="_blank"><i class="icon-facebook"></i></a>, <a class="socialMediaLink" href="https://twitter.com/leuven2030" target="_blank"><i class="icon-twitter"></i></a>, <a class="socialMediaLink" href="https://www.instagram.com/leuven2030/" target="_blank"><i class="icon-linkedin"></i></a>]
[<a class="socialMediaLink" href="//www.facebook.com/netwerktegenarmoede" target="_blank"><i class="icon-facebook"></i></a>, <a class="socialMediaLink" href="//@netwerktegenarm" target="_blank"><i class="icon-twitter"></i></a>]
[]
[]
[]
[]
Теперь суть, я пытаюсь парсить ссылки на соц сети и сразу записывать в словарь, ключ => значение:
'Facebook': social[0].get("href") if social else 'No available information',
Однако не все ресурсы обладают ссылками на на соц. сети, что-то есть, что-то нет, либо вообще ни чего нет!
И если, есть ошибка, я записываю дефолтное значение 'No available information' .
Так срабатывает с
'Facebook': social[0].get("href") if social else 'No available information',
,
но не работает с
'Twitter': social[1].get("href") if social else 'No available information', # [1] - это номер ссылки в списке на твиттер
'Linkedin': social[2].get("href") if social else 'No available information'
как правильно или правильнее это сделать?