Использование aiohttp Python, чтобы сделать веб-запрос, я получаю браузер устаревшие ошибок?

голоса
0

Я пытаюсь использовать aynscioи aiohttpпакеты для запроса веб - страницы. Тем не менее, ответ веб - страницы:

<p class=warning-title> Please upgrade your web browser. </p>  <br/>
<p class=p-top-30>This browser version is outdated, and may not be fully compatible with our website. Please upgrade to a newer version or use another browser.    </p>

Это не загрузит страницу Я пытаюсь получить доступ, но на главной странице вместо этого.

КОД

from fake_useragent import UserAgent
import ssl
from bs4 import BeautifulSoup
import asyncio
import aiohttp

ua = UserAgent()

hdr = {'User-Agent': str(ua.chrome),
       'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
       'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
       'Accept-Encoding': 'none',
       'Accept-Language': 'en-US,en;q=0.5',
       'Connection': 'keep-alive'}

ssl_ctx = ssl.create_default_context()
ssl_ctx.check_hostname = False
ssl_ctx.verify_mode = ssl.CERT_NONE

url = '...'

async def parse_website(session):
    async with session.get(url) as response:
        html = await response.text()

    soup = BeautifulSoup(html, 'html.parser')

    print(soup)

async with asyncio.Semaphore(3):
    async with aiohttp.TCPConnector(ssl=ssl_ctx, limit=None) as connector:
        async with aiohttp.ClientSession(connector=connector, headers=hdr) as session:
            for i in range(1):
                await parse_website(session)

Я пытался не включая headersаргумент в третьей до последней строки , async with aiohttp.ClientSession(connector=connector) as session:но тогда ответ , что я не стал ждать достаточно долго для капчи. Так что я должен использовать headersаргумент , чтобы обойти капчу , но я постоянно получаю Please upgrade your browserответ. Я также попытался добавить cookies={}к той же линии , async with aiohttp.ClientSession(connector=connector, headers=hdr, cookies={}) as session:но получить тот же оригинальный ответ говоря браузер устарел.

Я также показывает только один URL запроса здесь. После того, как я эта работа , я масштабироваться до тысяч, так вот почему я пытаюсь сделать эту работу с asyncioи aiohttpпакетами.

Может кто-нибудь сказать мне, где я собираюсь здесь не так?

Задан 02/12/2019 в 23:51
источник пользователем
На других языках...                            


1 ответов

Использование aiohttp Python, чтобы сделать веб-запрос, я получаю браузер устаревшие ошибок?

голоса
0

Я пытаюсь использовать aynscioи aiohttpпакеты для запроса веб - страницы. Тем не менее, ответ веб - страницы:

<p class="warning-title"> Please upgrade your web browser. </p>  <br/>
<p class="p-top-30">This browser version is outdated, and may not be fully compatible with our website. Please upgrade to a newer version or use another browser.    </p>

Это не загрузит страницу Я пытаюсь получить доступ, но на главной странице вместо этого.

КОД

from fake_useragent import UserAgent
import ssl
from bs4 import BeautifulSoup
import asyncio
import aiohttp

ua = UserAgent()

hdr = {'User-Agent': str(ua.chrome),
       'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
       'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
       'Accept-Encoding': 'none',
       'Accept-Language': 'en-US,en;q=0.5',
       'Connection': 'keep-alive'}

ssl_ctx = ssl.create_default_context()
ssl_ctx.check_hostname = False
ssl_ctx.verify_mode = ssl.CERT_NONE

url = '...'

async def parse_website(session):
    async with session.get(url) as response:
        html = await response.text()

    soup = BeautifulSoup(html, 'html.parser')

    print(soup)

async with asyncio.Semaphore(3):
    async with aiohttp.TCPConnector(ssl=ssl_ctx, limit=None) as connector:
        async with aiohttp.ClientSession(connector=connector, headers=hdr) as session:
            for i in range(1):
                await parse_website(session)

Я пытался не включая headersаргумент в третьей до последней строки , async with aiohttp.ClientSession(connector=connector) as session:но тогда ответ , что я не стал ждать достаточно долго для капчи. Так что я должен использовать headersаргумент , чтобы обойти капчу , но я постоянно получаю Please upgrade your browserответ. Я также попытался добавить cookies={}к той же линии , async with aiohttp.ClientSession(connector=connector, headers=hdr, cookies={}) as session:но получить тот же оригинальный ответ говоря браузер устарел.

Я также показывает только один URL запроса здесь. После того, как я эта работа , я масштабироваться до тысяч, так вот почему я пытаюсь сделать эту работу с asyncioи aiohttpпакетами.

Может кто-нибудь сказать мне, где я собираюсь здесь не так?

Ответил 02/12/2019 в 23:51
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more