В 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() игнорируется, в чём может быть дело ?