Bruke Pythons aiohttp å lage en web forespørsel, jeg får en nettleser utdatert feil?

stemmer
0

Jeg prøver å bruke aynscioog aiohttppakker for å be om en nettside. Imidlertid er nettsiden svar:

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

Det gjør faktisk ikke laste inn siden jeg prøver å få tilgang, men hjemmesiden i stedet.

KODE

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)

Jeg har prøvd ikke inkludert headersargument i tredje til siste linje async with aiohttp.ClientSession(connector=connector) as session:, men så svaret er at jeg ikke vente lenge nok for captcha. Så jeg må bruke headersargumentet for å omgå captcha men jeg konsekvent får en Please upgrade your browserreaksjon. Jeg har også prøvd å legge cookies={}til samme linje async with aiohttp.ClientSession(connector=connector, headers=hdr, cookies={}) as session:, men får samme opprinnelige svar sier nettleseren er utdatert.

Jeg er også bare viser en url forespørsel her. Når jeg har denne arbeids jeg vil skalere til tusenvis, så det er derfor jeg prøver å gjøre dette arbeidet med asyncioog aiohttppakker.

Kan noen fortelle meg hvor jeg går galt her?

Publisert på 02/12/2019 klokken 23:51
kilden bruker
På andre språk...                            


1 svar

Bruke Pythons aiohttp å lage en web forespørsel, jeg får en nettleser utdatert feil?

stemmer
0

Jeg prøver å bruke aynscioog aiohttppakker for å be om en nettside. Imidlertid er nettsiden svar:

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

Det gjør faktisk ikke laste inn siden jeg prøver å få tilgang, men hjemmesiden i stedet.

KODE

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)

Jeg har prøvd ikke inkludert headersargument i tredje til siste linje async with aiohttp.ClientSession(connector=connector) as session:, men så svaret er at jeg ikke vente lenge nok for captcha. Så jeg må bruke headersargumentet for å omgå captcha men jeg konsekvent får en Please upgrade your browserreaksjon. Jeg har også prøvd å legge cookies={}til samme linje async with aiohttp.ClientSession(connector=connector, headers=hdr, cookies={}) as session:, men får samme opprinnelige svar sier nettleseren er utdatert.

Jeg er også bare viser en url forespørsel her. Når jeg har denne arbeids jeg vil skalere til tusenvis, så det er derfor jeg prøver å gjøre dette arbeidet med asyncioog aiohttppakker.

Kan noen fortelle meg hvor jeg går galt her?

Svarte 02/12/2019 kl. 23:51
kilden bruker

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