Какой самый эффективный способ запустить несколько тестов в одном цикле? питон
Цель: посетить список страниц блога. На каждой странице блога и найдите социальные ссылки (Instagram, Facebook, Twitter) для этой страницы блога.
Предположение: первое вхождение каждой социальной ссылки будет правильным. Более поздние события на странице чаще всего относятся к чужой учетной записи.
Желаемый социальный формат URL - www.имя_социальной сети.com/username
Некоторые форматы URL нежелательны (например, instagram.com/abc/).
def check_instagram(url):
if 'instagram.com/' in url and "instagram.com/abc/" not in url::
return True
def check_facebook(url):
if 'facebook.com/' in url and "facebook.com/abc/" not in url::
return True
#my list of pages t be parsed
pages_to_check = ['www.url1.com', 'www.url2.com', ... 'www.urn_n.com']
#iterate through my list of pages t be parsed
for page in pages_to_check :
#get all the links on the page
page_links = *<selenium code to get all links on page>*
Я старался...
For link in page_links:
#when first Instagram handle found
if check_instagram(url):
*code to write to a dataframe here*
break
#when first Instagram handle found
if check_facebook(url):
*code to write to a dataframe here*
break
Проблема: как только я сопоставил один социальный URL, он выходит из цикла и не продолжает искать другие сетевые маркеры.
Некоторые варианты я могу подумать, если не очень хорошо. Я нуб. Буду очень признателен за совет.
Вариант № 1 - перебрать все ссылки и проверить первый матч ОДНОЙ социальной сети. Переберите все ссылки и проверьте первый матч в следующей социальной сети. (Ненавижу это)
Вариант № 2 - Создать переменные для каждого социального URL. Создать какой-то маркер для совпадения и только обновить переменную совпадения не задано. (Лучше, но я все еще буду продолжать повторяться после того, как я заполнил все переменные)
Вариант № 3 - Любые предложения или советы приветствуются. Как бы вы подошли к этому?
1 ответ
Предложение:
Сохраните трекер и обновите любой обработанный URL-адрес в социальной сети. Как только они все были обработаны, затем вырвитесь из цикла.
Код:
tracker = dict.fromkeys(['facebook', 'instagram'], False)
for link in page_links:
# if all the values of the tracker are true, then break out of the loop
if all(v for v in tracker.values()):
break
# when first Instagram handle found
if check_instagram(url):
*code to write to a dataframe here*
tracker['instagram'] = True
# when first Facebook handle found
if check_facebook(url):
*code to write to a dataframe here*
tracker['facebook'] = True
Я надеюсь, что это окажется полезным.