En utilisant le aiohttp de Python pour faire une demande de web, je reçois un hors du navigateur d'erreur de date?

voix
0

Je suis en train d'utiliser les aynscioet aiohttppaquets pour demander une page Web. Cependant, la réponse de page Web est:

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

Il ne fait pas charger la page que je suis en train d'accéder, mais la page d'accueil à la place.

CODE

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)

Je l' ai essayé de ne pas y compris l' headersargument de la troisième à la dernière ligne async with aiohttp.ClientSession(connector=connector) as session:mais la réponse est que je n'ai pas attendu assez longtemps pour que le captcha. Je dois donc utiliser l' headersargument pour contourner le captcha mais je reçois toujours une Please upgrade your browserréponse. J'ai aussi essayé d' ajouter cookies={}à la même ligne , async with aiohttp.ClientSession(connector=connector, headers=hdr, cookies={}) as session:mais obtenir la même réponse originale disant que le navigateur est obsolète.

Je suis également que montrant une demande d'URL ici. Une fois que je suis ce que je vais travailler à l' échelle des milliers, de sorte que ce pourquoi je suis en train de faire ce travail avec les asyncioet aiohttpemballages.

Quelqu'un pourrait-il me dire où je vais mal ici?

Créé 02/12/2019 à 23:51
source utilisateur
Dans d'autres langues...                            


1 réponses

En utilisant le aiohttp de Python pour faire une demande de web, je reçois un hors du navigateur d'erreur de date?

voix
0

Je suis en train d'utiliser les aynscioet aiohttppaquets pour demander une page Web. Cependant, la réponse de page Web est:

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

Il ne fait pas charger la page que je suis en train d'accéder, mais la page d'accueil à la place.

CODE

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)

Je l' ai essayé de ne pas y compris l' headersargument de la troisième à la dernière ligne async with aiohttp.ClientSession(connector=connector) as session:mais la réponse est que je n'ai pas attendu assez longtemps pour que le captcha. Je dois donc utiliser l' headersargument pour contourner le captcha mais je reçois toujours une Please upgrade your browserréponse. J'ai aussi essayé d' ajouter cookies={}à la même ligne , async with aiohttp.ClientSession(connector=connector, headers=hdr, cookies={}) as session:mais obtenir la même réponse originale disant que le navigateur est obsolète.

Je suis également que montrant une demande d'URL ici. Une fois que je suis ce que je vais travailler à l' échelle des milliers, de sorte que ce pourquoi je suis en train de faire ce travail avec les asyncioet aiohttpemballages.

Quelqu'un pourrait-il me dire où je vais mal ici?

Créé 02/12/2019 à 23:51
source utilisateur

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