Я пытаюсь написать асин c функцию для изменения прокси, если сайт блокирует меня во время анализа. Поэтому я проверяю resp.status и, если он не равен 200, я запрашиваю другой хост и порт, который будет использоваться при отправке запроса на получение. Вот пример кода:
async def get_proxy():
x = 0
while x < 1:
r = requests.get(proxy_giver_site)
contents = r.json()
try:
#create IP and PORT
IP = contents['ip']
PORT = contents['port']
string_proxy = IP + ':' + PORT
x += 2
print('This is proxy ==> {}'.format(string_proxy))
return await string_proxy
except:
x = 0
async def get_html(url):
status = 400
while status != 200:
async with aiohttp.ClientSession() as session:
proxy_url = get_proxy()
async with session.get(url, proxy=proxy_url) as resp:
if resp.status == 200:
status == 200
return await resp.text()
else:
proxy_url = get_proxy()
continue
if __name__ == '__main__':
categories_list = list_of_urls
loop = asyncio.get_event_loop()
# loop through each category to get html
for category in categories_list:
try:
html = loop.run_until_complete(get_html(category))
soup = BeautifulSoup(html, 'html.parser')
items_list.append(soup)
except Exception as e:
print('SOMETHING IS WRONG {} on page {} category {}'.format(e, p, category))
break
Но я получил эту ошибку и не знаю, как ее решить:
SOMETHING IS WRONG Constructor parameter should be str on page 1 category
Спасибо за помощь!