2009-08-26 9 views
1

Wenn ich Firefox auf http://bitbucket.org/tortoisehg/stable/wiki/Home/ReleaseNotes zeigen, bekomme ich eine HTML-Seite. Aber wenn ich versuche, dies in Python:Python urllib.urlopen() Anruf funktioniert nicht mit einer URL, die ein Browser akzeptiert

 
import urllib 

site = 'http://bitbucket.org/tortoisehg/stable/wiki/Home/ReleaseNotes' 
req = urllib.urlopen(site) 
text = req.read() 

ich folgendes:

500 Internal Server Error Der Server hat einen internen Fehler oder eine falsche Konfiguration und konnte Ihre Anfrage abzuschließen.

Was mache ich falsch?

+1

die Firefox AddOn 'Tamper data' verwenden, um zu sehen, was der Browser wirklich tut. Vielleicht vermisst du etwas. – Geo

+0

Es funktioniert für mich. Vielleicht ein temporäres Problem mit Bitbucket? –

+0

@Matthew, bist du sicher, dass es funktioniert? Wenn ich es ausführe, bekomme ich keine Ausnahme, aber der 587 Bytes lange HTML-Code, den ich bekomme, sagt "500 Interner Serverfehler" genau wie das beobachtete OP. –

Antwort

-2

Ich glaube nicht, dass Sie etwas falsch machen - es sieht so aus, als ob dieser Server nur ausgefallen wäre? Ihr Skript hat für mich funktioniert ("Text" enthielt die gleichen Daten wie im Browser).

+2

Lustig, ich kann das OP-Problem genau reproduzieren: von jedem Browser sehe ich eine reiche Seite, von urllib ein 587-Bytes HTML-Ergebnis, das sagt ' 500 Interner Server Fehler' etc etc. –

3

Sie tun nichts falsch, oberflächlich, und wie die Fehlerseite sagt, sollten Sie sich an die Administratoren der Website wenden, da sie diejenigen mit den Serverprotokollen sind, die erklären können, was passiert. Glücklicherweise sind Bitbuckets Site-Admins ein freundlicher Haufen!

Kein Zweifel, es gibt einige Header oder Kombination von Headern, die Browser in eine Richtung setzen, urllib setzt einen anderen Weg, und ein Fehler auf dem Server wird im letzteren Fall gekitzelt. Möglicherweise möchten Sie genau sehen, welche Header gesendet werden, z. mit Firebug in Firefox, und reproduzieren diese, bis Sie genau den Server-Fehler isolieren; Wahrscheinlich wird es der User Agent oder ein "Accept" -ish Header sein, der diesen Bug kitzelt.