Korzystanie aiohttp Pythona, aby złożyć zamówienie internetowej, Dostaję out of date przeglądarki błędu?

głosy
0

Staram się używać aynscioi aiohttppaczek do żądania strony internetowej. Jednakże reakcja strona internetowa jest:

<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 faktycznie nie załadować stronę próbuję dostęp, ale zamiast strony głównej.

KOD

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)

Próbowałem nie tym headersargumentem w trzeciej do ostatniej linii async with aiohttp.ClientSession(connector=connector) as session:, ale wtedy odpowiedź jest taka, że nie wystarczająco długo czekać na captcha. Więc muszę użyć headersargumentu ominąć captcha ale konsekwentnie uzyskać Please upgrade your browserodpowiedź. Próbowałem też dodanie cookies={}do tej samej linii async with aiohttp.ClientSession(connector=connector, headers=hdr, cookies={}) as session:, ale uzyskać ten sam oryginalny odpowiedź mówiąc przeglądarka jest nieaktualna.

Ja też tylko pokazując jedną prośbę url tutaj. Raz mam tej pracy będę skalować do tysięcy, więc dlatego staram się, aby tę pracę z asyncioi aiohttppaczek.

Może ktoś mi powiedzieć, gdzie mam zamiar źle tutaj?

Utwórz 02/12/2019 o 23:51
źródło użytkownik
W innych językach...                            


1 odpowiedzi

Korzystanie aiohttp Pythona, aby złożyć zamówienie internetowej, Dostaję out of date przeglądarki błędu?

głosy
0

Staram się używać aynscioi aiohttppaczek do żądania strony internetowej. Jednakże reakcja strona internetowa jest:

<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 faktycznie nie załadować stronę próbuję dostęp, ale zamiast strony głównej.

KOD

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)

Próbowałem nie tym headersargumentem w trzeciej do ostatniej linii async with aiohttp.ClientSession(connector=connector) as session:, ale wtedy odpowiedź jest taka, że nie wystarczająco długo czekać na captcha. Więc muszę użyć headersargumentu ominąć captcha ale konsekwentnie uzyskać Please upgrade your browserodpowiedź. Próbowałem też dodanie cookies={}do tej samej linii async with aiohttp.ClientSession(connector=connector, headers=hdr, cookies={}) as session:, ale uzyskać ten sam oryginalny odpowiedź mówiąc przeglądarka jest nieaktualna.

Ja też tylko pokazując jedną prośbę url tutaj. Raz mam tej pracy będę skalować do tysięcy, więc dlatego staram się, aby tę pracę z asyncioi aiohttppaczek.

Może ktoś mi powiedzieć, gdzie mam zamiar źle tutaj?

Odpowiedział 02/12/2019 o 23:51
źródło użytkownik

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