Python 嵌套的while循环不会按预期中断

Python 嵌套的while循环不会按预期中断,python,for-loop,Python,For Loop,我有一个链接列表,对于每个链接,我想检查它是否包含特定的子链接,并将此子链接添加到初始列表中。我有以下代码: def getAllLinks(): i = 0 baseUrl = 'http://www.cdep.ro/pls/legis/' sourcePaths = ['legis_pck.lista_anuala?an=2012&emi=3&tip=18&rep=0','legis_pck.lista_anuala?an=2020&e

我有一个链接列表,对于每个链接,我想检查它是否包含特定的子链接,并将此子链接添加到初始列表中。我有以下代码:

def getAllLinks():
    i = 0
    baseUrl = 'http://www.cdep.ro/pls/legis/'
    sourcePaths = ['legis_pck.lista_anuala?an=2012&emi=3&tip=18&rep=0','legis_pck.lista_anuala?an=2020&emi=3&tip=18&rep=0&nrc=1', 'legis_pck.lista_anuala?an=2010&emi=3&tip=18&rep=0']
    while i < len(sourcePaths)+1:
        for path in sourcePaths:
            res = requests.get(f'{baseUrl}{path}')
            soup = BeautifulSoup(res.text)

            next_btn = soup.find(lambda e: e.name == 'td' and '1..99' in e.text)
            if next_btn:
                for a in next_btn.find_all('a', href=True):
                    linkNextPage = a['href']
                    sourcePaths.append(linkNextPage)
                    i += 1
                break

            else:
                i += 1
                continue
            break

    return sourcePaths

print(getAllLinks())
第三个链接包含子链接,但我的代码无法查看该链接。最后,我得到一个包含初始链接的列表,加上第二个链接的子链接的4倍


我想我在某个地方中断了错误,但我不知道如何修复它。

您的第二个break语句从未执行,因为第一个“for”循环已被第一个break语句中断,并且从未到达第二个break语句。放置中断while循环的条件。

删除
while
。不需要。更改选择器

import requests
from bs4 import BeautifulSoup

def getAllLinks():
    baseUrl = 'http://www.cdep.ro/pls/legis/'
    sourcePaths = ['legis_pck.lista_anuala?an=2012&emi=3&tip=18&rep=0','legis_pck.lista_anuala?an=2020&emi=3&tip=18&rep=0&nrc=1', 'legis_pck.lista_anuala?an=2010&emi=3&tip=18&rep=0']

    for path in sourcePaths:
        res = requests.get(f'{baseUrl}{path}')
        soup = BeautifulSoup(res.text, "html.parser")

        next_btn = soup.find("p",class_="headline").find("table", {"align":"center"})
        if next_btn:
            anchor = next_btn.find_all("td")[-1].find("a")
            if anchor: sourcePaths.append(anchor["href"])
    return sourcePaths

print(getAllLinks())
输出:

['legis_pck.lista_anuala?an=2012&emi=3&tip=18&rep=0', 'legis_pck.lista_anuala?an=2020&emi=3&tip=18&rep=0&nrc=1', 'legis_pck.lista_anuala?an=2010&emi=3&tip=18&rep=0', 'legis_pck.lista_anuala?an=2020&emi=3&tip=18&rep=0&nrc=100', 'legis_pck.lista_anuala?an=2010&emi=3&tip=18&rep=0&nrc=100']

break
只是退出内部循环,所以它在外部“卡住”了,而您试图实现的是什么?:O这很漂亮。非常感谢。
['legis_pck.lista_anuala?an=2012&emi=3&tip=18&rep=0', 'legis_pck.lista_anuala?an=2020&emi=3&tip=18&rep=0&nrc=1', 'legis_pck.lista_anuala?an=2010&emi=3&tip=18&rep=0', 'legis_pck.lista_anuala?an=2020&emi=3&tip=18&rep=0&nrc=100', 'legis_pck.lista_anuala?an=2010&emi=3&tip=18&rep=0&nrc=100']