Seite 1 von 1

requests-html und error code 429

Verfasst: Donnerstag 31. Dezember 2020, 13:36
von Ernie1412
wenn ich eine Side "scrape" kommt nach kurzer zeit:
429 Too Many Requests
wie kann ich das umgehen ?
ich benutze requets-html, weil ich damit auf einfache art async die daten holen kann.

Code: Alles auswählen

session = HTMLSession()
        try:
            r = session.get(url_complete,headers=HEADERS,timeout = 60)
            r.raise_for_status()
        except Exception as e:
            if r.status_code == 429:
und dann ?
weiss da einer wie man das umgeht ?
hab da was von time.sleep(int(r.headers["Retry-After"])) gefunden, allerdings bei "requests" und nicht requests-html
hab dazu niochts in der DOC gefunden
oder muss ich das alles in request und asyncio umwandeln ?

Re: requests-html und error code 429

Verfasst: Donnerstag 31. Dezember 2020, 13:45
von __deets__
Es seltener machen. Offensichtlich wollen die
Nicht, dass du das tust. Und wenn sie es merken, limitieren sie dich. Also darfst du diesen Schutzmechanismus nicht triggern, durch langsamere Abfragen.

Re: requests-html und error code 429

Verfasst: Donnerstag 31. Dezember 2020, 14:05
von Ernie1412
wie kriege ich raus wieviel sekunden ich warten muss ? und wieviele anfragen erlaubt sind ?
Gibts dazu ein Hilfsmechanismus oder immer wieder probieren ?

Re: requests-html und error code 429

Verfasst: Donnerstag 31. Dezember 2020, 14:11
von __blackjack__
@Ernie1412: Du kannst schauen ob die Website selbst darüber irgendwo Informationen hat. Und ob der "Retry-After"-Header bei dem 429 steht, oder generell dort mal die Header und den Body der Antwort anschauen ob Hinweise enthalten sind. Ansonsten musst Du raten. Und weiterhin damit rechnen, dass sich das Verhalten auch ändern/dynamisch angepasst werden kann. Also auch beim immer wieder probieren vorsichtig sein, denn wenn Du mehrfach in den 429er läufst kann der Server auch auf die Idee kommen Anfragen von Deiner IP komplett zu blockieren.