Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 18, 2023 16:21:53

Injector
Зарегистрирован: 2019-12-06
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Повторная попытка соединения в aiohttp

Добрый день!
Как сделать повторный запрос к url с другого прокси, если статус ответа не 200? Заранее спасибо.

 async def func(url):
    for x in url:
        connect1 = ProxyConnector.from_url('http://тут-адрес-ротационных-прокси')
        async with aiohttp.ClientSession(connector=connect1) as session:
            async with session.get(x, headers=headers) as response:
                if response.status == 200:
                    print("Ура")
                else:
                    print("Сайт недоступен")

Офлайн

#2 Окт. 19, 2023 07:21:05

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Повторная попытка соединения в aiohttp

await response



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Окт. 19, 2023 10:15:48

Injector
Зарегистрирован: 2019-12-06
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Повторная попытка соединения в aiohttp

ZerG
await response
Можете подробнее объяснить как это реализовать? Например, 3 повторных попытки запроса.

Офлайн

#4 Окт. 19, 2023 11:34:36

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Повторная попытка соединения в aiohttp


Попробуй таки через aiohttp

 import aiohttp
url_to_scrape = ["http://example.com"]  # Список сайтов 
proxies = ["http://proxy1.com", "http://proxy2.com", "http://proxy3.com"]
async def connector(url, proxies, max_retries=3):
    """
    url: list - список сайтов для коннекта
    proxies: list - список проксей через которые хочешь ходить
    max_retries: int - количество попыток для соединения перед переходом к другому прокси
    """
    headers = {'User-Agent': 'Your User Agent'} # Тут свой набор хедеров вставишь
    # Если сайт всегда будет один - убери начальный for 
    for site in url:
        for proxy_url in proxies:
            retries = 0
            while retries < max_retries:
                pconnect = aiohttp.ProxyConnector.from_url(proxy_url)
                async with aiohttp.ClientSession(connector=pconnect) as session:
                    async with session.get(site, headers=headers) as response:
                        if response.status == 200:
                            print("Ура")
                            break  # попытка успешна - вышли из цикла
                        else:
                            print(f"Сайт недоступен через {proxy_url}, попытка {retries + 1}/{max_retries}")
                            retries += 1
                if retries >= max_retries:
                    print(f"Прокси не отвечает {proxy_url}, переходим к следующему")
await connector(url_to_scrape, proxies)

Ну дальше уже под себя ровняешь что тебе там надо



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Отредактировано ZerG (Окт. 19, 2023 11:35:19)

Офлайн

#5 Окт. 20, 2023 11:37:48

Injector
Зарегистрирован: 2019-12-06
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Повторная попытка соединения в aiohttp

ZerG
Попробуй таки через aiohttp
Благодарю, помогло!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version