В Python не срабатывают два for подряд

пишу авто-проверку контента на страницах сайта, хочу чтобы поочередно выводился текст где выводится указание в каком блоке ошибка и url страницы, если запускать всё сплошняком, работает, но не устраивает, что выводит всё подряд, написал вариант, где для каждой ссылки проводится проверка по одному условию, а потом также для каждой ссылки по следующему, но почему-то не срабатывает второй for, пробовал и в одной функции всё вписать, и разделить на несколько, в итоге так и не понимаю что к чему... Подскажите пожалуйста по возможности что можно с этим сделать!

import requests
import time
from bs4 import BeautifulSoup
import csv


def create_soup_list():
    soup_list = []
    url_list = []
    soup_exp_list = open("soup_exp_list.txt", "w", encoding='utf-8')
    with open('text_links.txt') as f:
        contents = f.readlines()
    with requests.session() as session:
        for i in range(len(contents)):
            with session.get(contents[i].strip()) as response:
                html = response.text
                soup = BeautifulSoup(html, 'lxml')
                soup_list.append(soup)
                url_list.append(response.url)
    return soup_list, url_list


def head(soup_list, url, expt):
    for i, check in enumerate(expt, start=0):
        try:
            heads = soup_list[i].select('h1[class=course-title]')[0]
        except IndexError:
            if (heads.get_text(strip=True).replace('\r', '').replace(" ", "").replace('\xa0', '').replace('–',
                                                                                                          '—').replace(
                '\n', '').replace('~', '').replace('P', '₽').splitlines() == check[0].replace('\r', '').replace(" ",
                                                                                                                "").replace(
                '\xa0', '').replace('–', '—').replace('\n', '').replace('~', '').replace('P',
                                                                                         '₽').splitlines()) == False:
                result.write(f'Ошибка в заголовке {url[i]} \n')
            continue


def dip_down_1(soup_list, url, expt):
    for i, check in enumerate(expt, start=0):
        # print(i)
        try:
            dip_down = soup_list[i].select('p[class=popular-professions_item-txt]')[0]
        except IndexError:
            if (dip_down.get_text(strip=True).replace('\r', '').replace(" ", "").replace('\xa0', '').replace('–',
                                                                                                             '—').replace(
                '\n', '').replace('~', '').replace('P', '₽').splitlines() == check[1].replace('\r', '').replace(" ",
                                                                                                                "").replace(
                '\xa0', '').replace('–', '—').replace('\n', '').replace('~', '').replace('P',
                                                                                         '₽').splitlines()) == False:
                result.write(f'Ошибка в подписи диалома 1 {url[i]} \n')
            continue


if __name__ == "__main__":
    now = time.time()
    result_list = []
    reder = open('bitrix№6841.csv', encoding='utf-8')
    expt = csv.reader(reder)
    result = open("Bitrix_№6841.txt", "a", encoding='utf-8')
    soup_list, url = create_soup_list()

    head(soup_list, url, expt)

    dip_down_1(soup_list, url, expt)

    print("--- %s seconds ---" % (time.time() - now))

Это одна из версий, уже кучу способов попробовал... Всё не выходит, можно даже всё в одной функции, просто чтоб момент с:

for i, check in enumerate(expt, start=0):
        try:
for i, check in enumerate(expt, start=0):
        try:

Срабатывал

первая версия была на асинхронке написана

Конкретно здесь получается что срабатывает функция head(), а функция dip_down_1() игнорируется, в чём может быть дело ?


Ответы (0 шт):