在不同时间满足条件时停止python for循环

在不同时间满足条件时停止python for循环,python,Python,下面是我用python编写的一段简单代码,用于从数字递增的URL中获取特定信息。它工作得很好,我可以在pythonidle中看到结果 import requests from urllib import request, response, error, parse from urllib.request import urlopen from bs4 import BeautifulSoup for i in range(35, 345, 1): url = 'https://www

下面是我用python编写的一段简单代码,用于从数字递增的URL中获取特定信息。它工作得很好,我可以在pythonidle中看到结果

import requests
from urllib import request, response, error, parse
from urllib.request import urlopen
from bs4 import BeautifulSoup

for i in range(35, 345, 1):
    url = 'https://www.example.com/ID=' + str(i)
    html = urlopen(url)
    soup = BeautifulSoup(html, "html.parser")
    information1=soup.find(text='sam')
    information2=soup.find(text='john')
    print(information1,information2,i)
结果如下所示:

None None 35
None None 36
None sam 37
john None 38
None None 39
....
None None 345
现在这很好,也是我所需要的,但是我想改进我的代码,当我需要的一切都找到时,让执行停止在“johnnone38”。这样就不会有不必要的额外300多行了

现在有两件事你应该知道。首先,information1和information2永远不会在同一个网页中。它们将始终位于不同的URL上。其次,在上面的代码中,information1出现在information2之前,但是如果我将字符串更改为我正在查找的其他字符串,则也可能出现相反的情况

因此,解决方案需要结合以下事实:information1和information2将出现在不同行的结果中,information1可以出现在第一行或第二行,反之亦然


我真的很难用上述条件形成“if”代码。我非常感谢你的帮助。多谢各位

您可以将跟踪器存储在循环外部,并在迭代之间保留它们:

导入请求
从urllib导入请求、响应、错误、解析
从urllib.request导入urlopen
从bs4导入BeautifulSoup
info1=无
info2=无
对于范围内的i(353451):
url='1〕https://www.example.com/ID=“+str(i)
html=urlopen(url)
soup=BeautifulSoup(html,“html.parser”)
information1=soup.find(text='sam')
information2=soup.find(text='john')
如果information1不是None,info1是None:
info1=information1
如果information2不是None,info2是None:
info2=information2
如果是info1和info2:
打破
打印('information1:{}'。格式(info1))
打印('information2:{}'。格式(info2))
# Default to None
information1 = None
information2 = None
for i in range(35, 345, 1):
    ...
    # If already set don't override
    information1 = information1 or soup.find(text='sam')
    # Same here
    information2 = information2 or soup.find(text='john')
    if information1 and information2:
        # We have both information1 and information2 so break out of the for loop
        break