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!