Erreur HTTP 403 : Interdit lors de la tentative de récupération de données boursières historiques
Ce problème provient d'une tentative de téléchargement automatique des données boursières historiques à l'aide de urllib2 , ce qui a entraîné une réponse HTTP Erreur 403 Forbidden.
Pour résoudre cette erreur, plusieurs solutions ont été proposées, notamment la modification de la chaîne de l'agent utilisateur et l'acceptation des cookies de réponse. Cependant, ces tentatives ont échoué.
Après une enquête plus approfondie, il a été découvert qu'en ajoutant des en-têtes supplémentaires à la demande, en particulier l'en-tête « Accepter », les données pouvaient être récupérées avec succès.
L'extrait de code suivant illustre la mise en œuvre réussie :
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
Notamment, l'ajout du seul en-tête « Accepter » était suffisant pour résoudre le problème. erreur.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!