@arhipT999

Как исправить ошибку [Errno 11001] getaddrinfo failed?

Код:
import telebot
import requests
from bs4 import BeautifulSoup as bs

bot = telebot.TeleBot('*Токен*')
new = 'Первым замом Жириновского в центральном аппарате ЛДПР назначен депутат Алексей Диденко'
n = []
num = 0

def rass(message):
    while True:
        import random
        global new
        global n
        global num
        url = f'http://{random.choice(n)}'
        response = requests.get(url)
        soup = bs(response.text, 'lxml')
        teg = soup.find_all('div', class_='tgme_widget_message_wrap')
        div = soup.find_all('div', class_='tgme_widget_message')
        next = soup.find_all('div', class_='tgme_widget_message_bubble')
        text_ = soup.find_all('div', class_='tgme_widget_message_text')

        s = []
        for i in text_:
            s.append(i)
        try:
            out = str(s[-1])
        except IndexError:
            bot.send_message(message.chat.id, 'Вы неправильно ввели какал!')
            num = 0
            n = []
            kanal(message)
        out = out[65:]
        out = out[:-6]
        for _ in range(out.count('<')):
            a = out.find('<')
            b = out.find('>')
            s = out[a:b+1]
            out = out.replace(s, '')
        if out == new:
            pass
        else:
            new = out
            bot.send_message(message.chat.id, f'{out}\n-----\nНовость от {url}')
            print(out)

def proverka(message):
    if message.text.lower() == 'стоп' and n != []:
        num = 1
        print(n)
        rass(message)
    else:
        n.append(message.text)
        bot.send_message(message.chat.id, 'Чтобы заполнить больше каналов пини "/next"')

def kanal(message):
    msg = bot.send_message(message.chat.id, 'Введите название канала например: @rian_ru. Если больше не хотите вводить названия напишите "Стоп"')
    bot.register_next_step_handler(msg, proverka)

@bot.message_handler(commands='next')
def pr(message):
    if num == 0:
        kanal(message)
    else:
        rass(message)

@bot.message_handler(commands='start')
def nav(message):
    pr(message)

bot.polling()

Консоль:
Traceback (most recent call last):
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connection.py", line 174, in _new_conn
    conn = connection.create_connection(
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\util\connection.py", line 72, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\socket.py", line 955, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 703, in urlopen
    httplib_response = self._make_request(
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 398, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connection.py", line 239, in request
    super(HTTPConnection, self).request(method, url, body=body, headers=headers)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1282, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1328, in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1277, in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 1037, in _send_output
    self.send(msg)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\http\client.py", line 975, in send
    self.connect()
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connection.py", line 205, in connect
    conn = self._new_conn()
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connection.py", line 186, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at 0x000001AFDEF130D0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\adapters.py", line 440, in send
    resp = conn.urlopen(
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\connectionpool.py", line 785, in urlopen
    retries = retries.increment(
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\urllib3\util\retry.py", line 592, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='rian_ru', port=80): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001AFDEF130D0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "c:\Users\Student\Documents\GitHub\arhipT999.github.io\tbot.py", line 73, in <module>
    bot.polling()
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\__init__.py", line 664, in polling
    self.__threaded_polling(non_stop, interval, timeout, long_polling_timeout, allowed_updates)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\__init__.py", line 726, in __threaded_polling
    raise e
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\__init__.py", line 686, in __threaded_polling
    self.worker_pool.raise_exceptions()
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\util.py", line 136, in raise_exceptions
    raise self.exception_info
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\telebot\util.py", line 88, in run      
    task(*args, **kwargs)
  File "c:\Users\Student\Documents\GitHub\arhipT999.github.io\tbot.py", line 53, in proverka
    rass(message)
  File "c:\Users\Student\Documents\GitHub\arhipT999.github.io\tbot.py", line 18, in rass
    response = requests.get(url)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\api.py", line 75, in get      
    return request('get', url, params=params, **kwargs)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\api.py", line 61, in request  
    return session.request(method=method, url=url, **kwargs)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 529, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\sessions.py", line 645, in send
    r = adapter.send(request, **kwargs)
  File "C:\Users\Student\AppData\Local\Programs\Python\Python310\lib\site-packages\requests\adapters.py", line 519, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='rian_ru', port=80): Max retries exceeded with url: / (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x000001AFDEF130D0>: Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))
  • Вопрос задан
  • 4704 просмотра
Пригласить эксперта
Ответы на вопрос 1
ketovv
@ketovv
Питонист
Давайте детально разберём вашу ошибку. Находится она тут - response = requests.get(url)

Ошибка типа ConnectionError сообщает нам о том, что у функции requests.get не получилось дождаться ответа от переданного ей ресурса (URL). Как так вышло?

Вы задаёте url параметр f'http://{random.choice(n)}', а random.choice(n) должен выбрать из n подходящий хост, но возвращает rian_ru?

Вряд ли у вас получится открыть сайт rian_ru правда же?

Помимо этого вам обязательно надо послушать ЭТУ песню и исправить все ошибки стилизации вашего кода, которые ужасают, простите.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы