Какой самый эффективный способ запустить несколько тестов в одном цикле?питон - PullRequest
0 голосов
/ 13 июня 2018

Цель: посетить список страниц блога.На каждой странице блога и найдите социальные ссылки (Instagram, Facebook, Twitter) для этой страницы блога.

Предположение: первое вхождение каждой социальной ссылки будет правильным.В дальнейшем события на этой странице более вероятно будут ссылаться на чужую учетную запись.

Желательный формат URL-адреса социальной сети: www. social_network_name .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 - Просмотрите все ссылки и протестируйте первый матч в ОДНОЙ социальной сети.Перейдите по всем ссылкам и протестируйте первый матч социальной сети NEXT.(Ненавижу это)

Вариант № 2 - Создание переменных для каждого социального URL.Создать какой-то маркер для совпадения и только обновить переменную совпадения не установлено.(Лучше, но я все равно буду продолжать итерацию после заполнения всех переменных)

Вариант № 3 - Любые предложения или советы приветствуются.Как бы вы подошли к этому?

1 Ответ

0 голосов
/ 13 июня 2018

Предложение :

Сохранить трекер и обновить любой обработанный 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

Надеюсь, это окажется полезным.

...