Динамическое изменение прокси с помощью aiohttp python - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь написать асин 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

Спасибо за помощь!

...