gpt4 book ai didi

python - 在单个循环中运行多个测试的最有效方法是什么? Python

转载 作者:行者123 更新时间:2023-12-01 09:20:20 24 4
gpt4 key购买 nike

目标:访问博客页面列表。在每个博客页面上找到该博客页面的社交链接(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 - 欢迎任何建议或建议。你会如何处理这个问题?

最佳答案

建议:

保留跟踪器并更新已处理的所有社交媒体 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

我希望这有用。

关于python - 在单个循环中运行多个测试的最有效方法是什么? Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50839629/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com