2017-08-27 4 views
1

Bitte markieren Sie es nicht als trivial Duplikat: Python requests giving errror: IndexError: list index out of rangePython-Anfragen: „Indexerror: Listenindex außerhalb des zulässigen Bereichs“

ich die Fehler bin stoßen bei dem Versuch, eine GET zu senden:

http://astat.bugly.qq.com

die genaue Linie, die ich im Code verwenden, der mir die Anfrage gibt, vielleicht bin ich mit Blick auf etwas:

r = requests.get("http://"+url, stream=True, timeout=3) 

wo astat.bugly.qq.com ist übergeben als url

Ich lese die URL aus einer CSV-Datei, aber ich überprüft, dass es die entsprechende URL liest.

Ich kann sogar mehrere Male die Python-REPL erstellen, ich hoffe, Sie können auch. Beweis: enter image description here

Ich weiß nicht, was könnte dies verursachen.

+1

Kann Ihr Problem nicht replizieren - welche Version von 'Anfragen' haben Sie installiert? – AChampion

+1

Ich kann es mit Python 2.7.13, Anfragen 2.18.3, auf win10 replizieren. – thebjorn

+1

.. und auch mit Anfragen 2.18.4. – thebjorn

Antwort

2

Die betreffende URL ist ein Nur-Text-Dokument, das ohne Kopfzeilen gesendet wird.

Die Bibliothek Anforderungen scheint darauf bestehen, dass es mindestens eine Kopfzeile (es macht headers[-1], wenn Sie den Indexfehler erhalten).

Ich bin nicht sicher, wenn Sie etwas in Anfragen tun können, um ihn zu arbeiten, aber man urllib verwenden:

import urllib 
txt = urllib.urlopen('http://astat.bugly.qq.com').read() 

Update:

my goal is to read certain headers from a website, how would you suggest I do that considering the situation ?

Der Server sendet die folgende :

~$ telnet astat.bugly.qq.com 80 
Trying 103.7.30.121... 
Connected to astat-bugly-tgw4l.mig.tencent-cloud.net. 
Escape character is '^]'. 
GET/HTTP/1.1 
HTTP/1.1 200 OK 
       Date: Thu, 30 Aug 2012 12:01:27 GMT 
       Server: Apache/2.2.17 (Unix) PHP/5.3.6 
       Cache-Control: max-age=1800 
       Keep-Alive: timeout=5, max=98 
       Connection: Keep-Alive 
       Transfer-Encoding: chunked 
       Content-Type: text/plain; charset=UTF-8 
       Copyright @ 1998 - 2012 Tencent. All Rights Reserved. 
       Content-Length: 17 

lb monitor page 
Connection closed by foreign host. 

kurz tel net (oder etwas ähnlich niedriges Niveau), ich glaube nicht, dass Sie viel Glück haben werden, bei diesen "Kopfzeilen" zu kommen (die natürlich nicht eingerückt sein sollten, oder eine zufällige Copyright-Zeichenfolge eingebettet haben).

+1

Es ist die zugrunde liegende 'urllib3'-Bibliothek - bekanntes Problem: https://github.com/shazow/ urllib3/issues/950 – AChampion

+1

Die Antwort wird auch ohne eine Standard-HTTP-Statusantwort gesendet - also ist HTTP nicht gültig. Während "urllib" funktioniert, können Sie sich nicht darauf verlassen, wenn Sie keine gültige HTTP-Antwort haben. – AChampion

+1

@AChampion Ich stimme dir zu, wenn du den Server kontrollierst, dann ist es offensichtlich das Richtige, _it_ zu reparieren. – thebjorn

Verwandte Themen