попробуйте кэшировать блок в цикле for, пропуская итерацию, в которой он сталкивается с ошибкой

#python-3.x

#python-3.x

Вопрос:

В следующем фрагменте кода я пытаюсь извлечь некоторые данные с сайта imdb.Я перебираю заголовки (tt000001, tt000002 и т.д.), Которые хранятся в файле csv, И помещаю повторенное значение в адрес и запрашиваю страницу.Я использую прокси, чтобы избежать получения connectionerror, поэтому я помещаю код в блок try и except, чтобы в случае возникновения какой-либо проблемы можно было просто сменить прокси, и программа могла продолжить работу без прерывания.

 for i in sheet2.iter_cols(min_row=2,max_row=diff 2,min_col=1,max_col=1):
    for j in i:
        try:
            print("getting address")
            req=requests.get("https://www.imdb.com/title/" str(j.value),proxies=pro,headers=headers)
            soup=bs4.BeautifulSoup(req.text,'html.parser')
            x=soup.find('div',class_="title_wrapper")
            list1.append(x.h1.getText())
            print(list1)
        except:
            print("Proxy {} not working, changing it".format(pro))
            pro=oneproxypls()

            headers={'User-Agent':ua.random} 
        else:
            print("Written in the {} successfully".format(j.value))   
  

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

Ответ №1:

это должно сработать:

 for i in sheet2.iter_cols(min_row=2,max_row=diff 2,min_col=1,max_col=1):
    for j in i:
        try:
            print("getting address")
            req=requests.get("https://www.imdb.com/title/" str(j.value),proxies=pro,headers=headers)
            soup=bs4.BeautifulSoup(req.text,'html.parser')
            x=soup.find('div',class_="title_wrapper")
            list1.append(x.h1.getText())
            print(list1)
        except:
            print("Proxy {} not working, changing it".format(pro))
            pro=oneproxypls()

            headers={'User-Agent':ua.random} 
            continue
        else:
            print("Written in the {} successfully".format(j.value))   
  

и если продолжить не работает, попробуйте передать

Комментарии:

1. если continue не работает, вам нужно заменить его на pass