Warum schlägt urllib.urlopen (url) fehl, während urllib2.urlopen (url) funktioniert. Was genau an der Serverantwort verursacht das?

8

Ich möchte nur eine bessere Vorstellung von dem, was hier vor sich geht, ich kann natürlich das Problem umgehen, indem ich urllib2 benutze.

%Vor%

Ссылка zeigt diesen Code in Aktion mit der Ausnahme / stacktrace. foo.headers und foo.read() funktionieren einwandfrei

[email protected] ~ $ : curl -I "http://www.crutchfield.com/S-pqvJFyfA8KG/p_15410415/Dynamat-10415-Xtreme-Speaker-Kit.html"

%Vor%

Danke.

    
Stuart Powers 23.02.2012, 22:15
quelle

2 Antworten

7

Dieser Server ist sowohl nicht-deterministisch als auch empfindlich gegenüber der HTTP-Version. urllib2 ist HTTP / 1.1, urllib ist HTTP / 1.0. Sie können dies reproduzieren, indem Sie curl --http1.0 -I "http://www.crutchfield.com/S-pqvJFyfA8KG/p_15410415/Dynamat-10415-Xtreme-Speaker-Kit.html" mehrmals hintereinander ausführen. Sie sollten die Ausgabe curl: (52) Empty reply from server gelegentlich sehen; Das ist der Fehler urllib meldet. (Wenn Sie die Anfrage einige Male mit urllib erneut ausgeben, sollte dies manchmal erfolgreich sein.)

    
Glyph 23.02.2012, 22:39
quelle
0

Ich habe das Problem gelöst. Ich benutze jetzt einfach die urrlib anstelle von urllib2 und alles funktioniert gut, danke euch allen:)

    
David Wiedenau 24.02.2015 10:51
quelle

Tags und Links