Heim  >  Artikel  >  Backend-Entwicklung  >  Wie überwindet man den beim Herunterladen historischer Bestandsdaten verbotenen HTTP-Fehler 403?

Wie überwindet man den beim Herunterladen historischer Bestandsdaten verbotenen HTTP-Fehler 403?

DDD
DDDOriginal
2024-11-09 07:03:02280Durchsuche

How to Overcome HTTP Error 403 Forbidden When Downloading Historic Stock Data?

HTTP-Fehler 403: Verboten beim Versuch, historische Bestandsdaten abzurufen

Dieses Problem ist auf einen Versuch zurückzuführen, historische Bestandsdaten mithilfe von urllib2 automatisch herunterzuladen , was zu einer HTTP-Fehler-403-Antwort „Forbidden“ führte.

Um diesen Fehler zu beheben, wurden mehrere Lösungen vorgeschlagen, darunter das Ändern der Benutzeragentenzeichenfolge und das Akzeptieren von Antwortcookies. Diese Versuche waren jedoch erfolglos.

Bei weiteren Untersuchungen wurde festgestellt, dass durch das Hinzufügen zusätzlicher Header zur Anfrage, insbesondere des „Accept“-Headers, die Daten erfolgreich abgerufen werden konnten.

Der folgende Codeausschnitt veranschaulicht die erfolgreiche Implementierung:

import urllib2,cookielib

site= "http://www.nseindia.com/live_market/dynaContent/live_watch/get_quote/getHistoricalData.jsp?symbol=JPASSOCIAT&fromDate=1-JAN-2012&toDate=1-AUG-2012&datePeriod=unselected&hiddDwnld=true"
hdr = {'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11',
       '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.8',
       'Connection': 'keep-alive'}

req = urllib2.Request(site, headers=hdr)

try:
    page = urllib2.urlopen(req)
except urllib2.HTTPError, e:
    print e.fp.read()

content = page.read()
print content

Bemerkenswert ist, dass nur das Hinzufügen des „Accept“-Headers ausreichte, um den Fehler zu beheben.

Das obige ist der detaillierte Inhalt vonWie überwindet man den beim Herunterladen historischer Bestandsdaten verbotenen HTTP-Fehler 403?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn