2017-10-23 2 views
0

Ich habe Beiträge mit ähnlichen Fragen gefunden, aber sie haben mein Problem nicht wirklich gelöst.Python requests.exceptions.TooManyRedirects: Überschritt 30 Weiterleitungen

Ich versuche, einige Daten von Nasdaq Website zu finden, aber diese Nachricht erhalten, wenn mehrere Anfragen gesendet werden. Mein Verständnis ist, dass die Website versucht, mich zu einer anderen URL umzuleiten, die dann zu einer anderen URL umleitet und in einer Schleife endet, aber die Anforderungsbibliothek stoppt nach einer bestimmten Anzahl von Weiterleitungen. Ich erhalte jedoch eine Fehlermeldung, die unten aufgeführt ist. Kann jemand bitte mit einer Lösung helfen?

import requests 

header = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.131 Safari/537.36'} 

source1 = requests.get('http://www.nasdaq.com/earnings/report/AAPL',headers = header).text 
source2 = requests.get('http://www.nasdaq.com/earnings/report/FB',headers = header).text 
source3 = requests.get('http://www.nasdaq.com/earnings/report/AMZN',headers = header).text 
source4 = requests.get('http://www.nasdaq.com/earnings/report/BABA',headers = header).text 
source5 = requests.get('http://www.nasdaq.com/earnings/report/IBM',headers = header).text 

Die Fehlermeldung folgt:

Traceback (most recent call last): 
    File "<pyshell#3>", line 1, in <module> 
source = requests.get('http://www.nasdaq.com/earnings/report/AAPL',headers = header).text 
    File "C:\Python36\lib\site-packages\requests\api.py", line 72, in get 
return request('get', url, params=params, **kwargs) 
    File "C:\Python36\lib\site-packages\requests\api.py", line 58, in request 
return session.request(method=method, url=url, **kwargs) 
    File "C:\Python36\lib\site-packages\requests\sessions.py", line 508, in request 
resp = self.send(prep, **send_kwargs) 
    File "C:\Python36\lib\site-packages\requests\sessions.py", line 640, in send 
history = [resp for resp in gen] if allow_redirects else [] 
    File "C:\Python36\lib\site-packages\requests\sessions.py", line 640, in <listcomp> 
history = [resp for resp in gen] if allow_redirects else [] 
    File "C:\Python36\lib\site-packages\requests\sessions.py", line 140, in resolve_redirects 
raise TooManyRedirects('Exceeded %s redirects.' % self.max_redirects, response=resp) 
requests.exceptions.TooManyRedirects: Exceeded 30 redirects. 
+0

Sie scheinen vergessen zu haben, eine Frage zu stellen ... – Shadow

+0

@Shadow Danke Ich habe meinen ursprünglichen Beitrag bearbeitet. Meine Frage ist, wie kann ich auf die Website zugreifen, ohne diese Fehlermeldung zu treffen. – jingz

Antwort

0

Versuchen http://www.nasdaq.com/earnings/report/AAPL im Web-Browser zu schlagen. Dies ist kein Problem mit Python - diese Website leitet Sie buchstäblich zu oft um. Wenn Sie die Header der Anfrage lesen, werden Sie feststellen, dass diese URL zu http://www.nasdaq.com/earnings/report/aapl umleitet. Wenn Sie diese URL aufrufen, werden Sie erneut zu http://www.nasdaq.com/earnings/report/aapl weitergeleitet. Dies verursacht eine Endlosschleife, die Python korrekt stoppt.

Sie können nichts über diese Client-Seite tun. Dies ist ein Fehler, der auf dem Server behoben werden muss. Wenn Sie die Kontrolle über den Server haben, könnte dies eine andere Frage wert sein. Wenn nicht, dann müssen Sie sich mit der Person in Verbindung setzen, die es ist, oder alternativ einen anderen Weg finden, um die gesuchten Daten zu erhalten.

+0

danke für die Erklärung. – jingz

+0

Ich weiß, dass es Ihnen in diesem Fall wahrscheinlich nicht geholfen hat - aber bitte überlegen Sie, diese Antwort als akzeptiert zu markieren, da es die unglückliche Wahrheit ist. – Shadow

+0

Wie kann ich feststellen, ob sich die URL selbst umleitet? Wo finde ich das in den Kopfzeilen? Tut mir leid, ich bin neu in der Programmierung und/oder Python. – jingz

Verwandte Themen