Форум сайта python.su
Добрый день!
Как сделать повторный запрос к 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("Сайт недоступен")
Офлайн
await response
Офлайн
ZerGМожете подробнее объяснить как это реализовать? Например, 3 повторных попытки запроса.
await response
Офлайн
Попробуй таки через 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)
Офлайн
ZerGБлагодарю, помогло!
Попробуй таки через aiohttp
Офлайн