2015-05-01 8 views
5

Ich versuche, eine Zeichenfolge von einer Website zu erhalten. Ich benutze das requests Modul, um die GET Anfrage zu senden.Text von der Website erscheint als Gibberish anstelle von Hebräisch

text = requests.get("http://example.com") #send GET requests to the website 
print text.text #print the variable 

jedoch aus irgendeinem Grund, der Text in Gibberish erscheint statt Hebräisch:

<div> 
<p>שרת</p> 
</div> 

Tough, wenn ich den Verkehr mit Fiddler schnuppern oder die Website in meinem Browser sehen, ich sehe es auf Hebräisch :

<div> 
<p>שרת</p> 
</div> 

Durch die Art und Weise, die html Code enthält Meta-Tag, das die Codierung definiert, die utf-8 ist. Ich habe versucht, den Text zu utf-8 zu kodieren, aber es immer noch in Kauderwelsch. Ich habe versucht, es mit utf-8 zu deocde, aber es wirft UnicodeEncodeError Ausnahme. Ich habe erklärt, dass ich utf-8 in der ersten Zeile des Skripts verwende. Außerdem ist das Problem auch passiert, wenn ich die Anfrage mit dem eingebauten urllib Modul sende.

Ich lese die Unicode HOWTO, aber immer noch nicht schaffen, es zu beheben. Ich lese auch viele Threads hier (sowohl über die UnicodeEncodeError Ausnahme und darüber, warum Hebräisch in Python zu Kauderwelsch wird), aber ich konnte es immer noch nicht schaffen, es zu reparieren.

Ich benutze Python 2.7.9 auf einem Windows-Rechner. Ich führe mein Skript in Python IDLE.

Vielen Dank im Voraus.

+0

Sie sollten .content anstelle von Text verwenden –

Antwort

6

Der Server deklariert die Codierung nicht korrekt.

>>> print u'שרת'.encode('latin-1').decode('utf-8') 
שרת 

Set text.encoding vor text.text zugreifen.

text = requests.get("http://example.com") #send GET requests to the website 
text.encoding = 'utf-8' # Correct the page encoding 
print text.text #print the variable 
+0

Vielen Dank! Ich würde es nie selbst finden. Danke noch einmal! – ohad987

Verwandte Themen