代码之家  ›  专栏  ›  技术社区  ›  Axle Max

在一个循环中运行多个测试最有效的方法是什么?蟒蛇

  •  1
  • Axle Max  · 技术社区  · 6 年前

    目标:访问博客页面列表。在每个博客页面上,找到该博客页面的社交链接(Instagram、Facebook、Twitter)。

    假设:每个社会联系的第一次出现将是正确的。页面后面出现的事件更可能涉及其他人的帐户。

    理想的社交网址格式是www。 社交网络名称 .com/用户名

    有一些格式的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 回复  |  直到 6 年前
        1
  •  1
  •   Abdou    6 年前

    建议

    代码

    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
    

    我希望这证明有用。