Срабатывание ошибки при парсинге сайта requests.exceptions.ConnectionError

Написал парсер который сохраняет в файлы, страницы с сайта. Проблема заключается в следующем на 31 из 95 страниц срабатывает ошибка (представленная ниже). Настроил исключение (try/except для отлавливания исключений). Пробовал:

  1. задать timeout=1000000.1 страницы не парсятся проблемные
  2. указать verify=False для ssl
  3. указать time.sleep(60)
  4. принудительно повторять парсинг в случае срабатывания ошибки 5 раз для одной страницы Проблемные страницы не парсятся

Ошибка

requests.exceptions.ConnectionError: HTTPConnectionPool(host='*******', port=80): Max retries exceeded with url: //*******/?user-agent=Mozilla%2F5.0+%28Windows+NT+10.0%3B+Win64%3B+x64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F85.0.4183.121+Safari%2F537.36&accept=%2A%2F%2A (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x0000018680FCAD60>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

Часть логов

TaskNumber1.py[LINE:65]# INFO     [2020-10-26 16:22:59,877]  Парсится страница Курсы и языковые школы 90
connectionpool.py[LINE:226]# DEBUG    [2020-10-26 16:22:59,879]  Starting new HTTP connection (1): ********:80
<module 'ntpath' from 'C:\\Users\\Danil\\AppData\\Local\\Programs\\Python\\Python38\\lib\\ntpath.py'>
connectionpool.py[LINE:433]# DEBUG    [2020-10-26 16:22:59,898]  ****** "GET /inter/test.aspx?user-agent=Mozilla%2F5.0+%28Windows+NT+10.0%3B+Win64%3B+x64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F85.0.4183.121+Safari%2F537.36&accept=%2A%2F%2A HTTP/1.1" 200 22135
<module 'ntpath' from 'C:\\Users\\Danil\\AppData\\Local\\Programs\\Python\\Python38\\lib\\ntpath.py'>
TaskNumber1.py[LINE:65]# INFO     [2020-10-26 16:22:59,982]  Парсится страница Центры тестирования 91
connectionpool.py[LINE:226]# DEBUG    [2020-10-26 16:22:59,985]  Starting new HTTP connection (1): ****.ruhttp:80
TaskNumber1.py[LINE:78]# ERROR    [2020-10-26 16:24:11,058]  Неудачный парсинг повтор Библиотека 92
connectionpool.py[LINE:226]# DEBUG    [2020-10-26 16:24:11,059]  Starting new HTTP connection (1): *****.ruhttp:80
TaskNumber1.py[LINE:78]# ERROR    [2020-10-26 16:25:22,129]  Неудачный парсинг повтор Библиотека 92
connectionpool.py[LINE:226]# DEBUG    [2020-10-26 16:25:22,131]  Starting new HTTP connection (1): *****.ruhttp:80
TaskNumber1.py[LINE:78]# ERROR    [2020-10-26 16:26:33,214]  Неудачный парсинг повтор Библиотека 92
connectionpool.py[LINE:226]# DEBUG    [2020-10-26 16:26:33,215]  Starting new HTTP connection (1): *****.ruhttp:80
TaskNumber1.py[LINE:78]# ERROR    [2020-10-26 16:27:44,297]  Неудачный парсинг повтор Библиотека 92
connectionpool.py[LINE:226]# DEBUG    [2020-10-26 16:27:44,298]  Starting new HTTP connection (1): *****.ruhttp:80
TaskNumber1.py[LINE:78]# ERROR    [2020-10-26 16:28:55,364]  Неудачный парсинг повтор Библиотека 92
connectionpool.py[LINE:226]# DEBUG    [2020-10-26 16:28:55,365]  Starting new HTTP connection (1): ****.ruhttp:80
TaskNumber1.py[LINE:78]# ERROR    [2020-10-26 16:30:06,448]  Неудачный парсинг повтор Библиотека 92
connectionpool.py[LINE:226]# DEBUG    [2020-10-26 16:30:06,448]  Starting new HTTP connection (1): *****.ru:80
connectionpool.py[LINE:433]# DEBUG    [2020-10-26 16:30:06,668]  http://******:80 "GET /help/phonebook.aspx?user-agent=Mozilla%2F5.0+%28Windows+NT+10.0%3B+Win64%3B+x64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F85.0.4183.121+Safari%2F537.36&accept=%2A%2F%2A HTTP/1.1" 200 None
TaskNumber1.py[LINE:65]# INFO     [2020-10-26 16:30:06,794]  Парсится страница Телефонная книга 93
TaskNumber1.py[LINE:85]# DEBUG    [2020-10-26 16:30:06,796]  [33, 38, 43, 48, 54, 56, 58, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 83, 92]

Код

class ParserSiteBGU ():
    def __init__(self, URL, HEADERS):
        self.URL=URL
        self.HEADERS=HEADERS

    def getSiteTopMenu1(self):
        requests.packages.urllib3.disable_warnings()
        result=requests.get(self.URL, self.HEADERS)
        if result.status_code==200:
            soup=BeautifulSoup(result.text, 'html.parser')
            listmenu=soup.find_all('div', 'menutop')
            listmenu1=listmenu[0].find_all('a')
            nameList=[]
            for item in listmenu1:
                nameList.append({
                    'title': item.get_text(),
                    'link': "{}{}".format(self.URL, item.get('href')),
                })
            obj=WriteFile(nameList, self.HEADERS)
            obj.functionWriteFile()
        else: logging.error("Ошибка парсинга")

class WriteFile :

    def __init__(self, dictionary, HEADERS):
        self.dictionary=dictionary
        self.HEADERS=HEADERS

    def functionWriteFile (self) :
        try :
            path = os.getcwd()
            path=str(path)+"\\"+"exercise1"
            os.mkdir(path)
        except FileExistsError: logging.warning("Каталог не создан")
        count=len(self.dictionary)
        index=0
        parsing=[]
        ind=0
        while (count!=0):
            title=str(self.dictionary[index]['title'])
            link=str(self.dictionary[index]['link'])
            try:
                result=requests.get(link, self.HEADERS, timeout=1000000.1, verify=False)
                if result.status_code==200:
                    soup=BeautifulSoup(result.text, 'html.parser')
                    listmenu=soup.find_all()
                    writeTextInFile=""
                    for item in listmenu:
                        writeTextInFile=writeTextInFile+item.get_text()
                    while writeTextInFile.find("\n\n")!=-1:
                        writeTextInFile=writeTextInFile.replace("\n\n", "\n")
                    logging.info("Парсится страница "+title + " "+str(index))
                    print (os.path)
                    while (os.path.isfile(path+"\\"+title+".txt"))==True:
                        logging.error("Файл существует "+title)
                        title=title+" "+str(index)
                    file = open('exercise1/'+title+".txt", 'a', encoding='utf-8')
                    file.write(writeTextInFile)
                    file.close()
                    index=index+1
                    count=count-1
                else: logging.warning("Каталог не создан")
            except requests.exceptions.ConnectionError:
                time.sleep(60)
                logging.error("Неудачный парсинг повтор "+title +" "+str(index))
                if ind==5:
                    parsing.append(index)
                    index=index+1
                    count=count-1
                    ind=0
                else: ind=ind+1
        logging.debug(parsing)

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