Python urllib.urlopen () funktioniert nicht mit einer URL, die ein Browser akzeptiert

StackOverflow https://stackoverflow.com/questions/1335439

  •  20-09-2019
  •  | 
  •  

Frage

Wenn ich Firefox zeige auf http://bitbucket.org/tortoiseehg/stable/wiki/home/releasenotes, Ich bekomme eine Seite von HTML. Aber wenn ich das in Python versuche:

import urllib

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

Ich bekomme Folgendes:

500 Interner Serverfehler Der Server stieß auf einen internen Fehler oder eine falsche Konfiguration und konnte Ihre Anforderung nicht abschließen.

Was mache ich falsch?

War es hilfreich?

Lösung

Sie machen nichts falsch, Bitbucket erfasst eine Benutzeragentur (zum Beispiel, um Quecksilberkunden zu erkennen). Gerade Ändern des Benutzeragenten behebt es (wenn es nicht hat urllib als Substring).

Sie sollten ein Problem dazu füllen: http://bitbucket.org/jespern/bitbucket/issues/new/

Andere Tipps

Sie machen nichts Falsches an der Oberfläche, und wie auf der Fehlerseite besagt, sollten Sie sich an die Administratoren der Website wenden, da sie mit den Serverprotokollen sind, was erklären kann, was passiert. Glücklicherweise sind Bitbuckets Site -Administratoren ein freundlicher Haufen!

Zweifellos gibt es einen Header oder eine Kombination von Header, die Browser in eine Richtung einstellen, Urllib einen anderen Weg setzt, und ein Fehler auf dem Server wird im letzteren Fall gekitzelt. Möglicherweise möchten Sie genau sehen, welche Header EG mit Firebug in Firefox gesendet werden, und reproduzieren diese, bis Sie genau den Serverfehler isolieren. Höchstwahrscheinlich wird es der Benutzeragent oder ein "Akzeptieren" -ISH-Header, der diesen Fehler kitzelt.

Ich glaube nicht, dass Sie etwas falsch machen - es sieht so aus, als wäre dieser Server nur nicht unten? Ihr Skript hat für mich gut funktioniert ('Text' enthielt dieselben Daten wie im Browser angezeigt).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top