Používání Pythonův aiohttp provést požadavek webové, Začínám out prohlížeče chyb data?

hlasů
0

Snažím se používat aynscioi aiohttpbalíčky požádat o webovou stránku. Nicméně odpověď webové stránky je:

<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>

To není ve skutečnosti načtení stránky se snažím přístup, ale domovskou stránku místo.

KÓD

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)

Snažil jsem se to včetně headerszdůvodnění třetí na poslední řádek async with aiohttp.ClientSession(connector=connector) as session:, ale pak odpověď je, že jsem neměl čekat dost dlouho na captcha. Takže musím použít headersargument bypass CAPTCHA ale důsledně dostat Please upgrade your browserodpověď. Také jsem se snažil přidat cookies={}ke stejné lince async with aiohttp.ClientSession(connector=connector, headers=hdr, cookies={}) as session:, ale dostanete stejný originál odpověď říká, že prohlížeč je zastaralý.

Jsem také zobrazovat pouze jednu žádost url zde. Poté, co jsem tento pracovní budu dosahovat až tisíců, takže je důvod, proč se snažím, aby to fungovalo s asyncioa aiohttpbalíčků.

Mohl by mi někdo říct, kam jdu špatně?

Položena 02/12/2019 v 23:51
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

Používání Pythonův aiohttp provést požadavek webové, Začínám out prohlížeče chyb data?

hlasů
0

Snažím se používat aynscioi aiohttpbalíčky požádat o webovou stránku. Nicméně odpověď webové stránky je:

<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>

To není ve skutečnosti načtení stránky se snažím přístup, ale domovskou stránku místo.

KÓD

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)

Snažil jsem se to včetně headerszdůvodnění třetí na poslední řádek async with aiohttp.ClientSession(connector=connector) as session:, ale pak odpověď je, že jsem neměl čekat dost dlouho na captcha. Takže musím použít headersargument bypass CAPTCHA ale důsledně dostat Please upgrade your browserodpověď. Také jsem se snažil přidat cookies={}ke stejné lince async with aiohttp.ClientSession(connector=connector, headers=hdr, cookies={}) as session:, ale dostanete stejný originál odpověď říká, že prohlížeč je zastaralý.

Jsem také zobrazovat pouze jednu žádost url zde. Poté, co jsem tento pracovní budu dosahovat až tisíců, takže je důvod, proč se snažím, aby to fungovalo s asyncioa aiohttpbalíčků.

Mohl by mi někdo říct, kam jdu špatně?

Odpovězeno 02/12/2019 v 23:51
zdroj uživatelem

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