2015-05-01 33 views
5

Sto cercando di ottenere una stringa da un sito Web. Io uso il modulo requests per inviare la richiesta GET.Il testo del sito Web viene visualizzato come Gibberish invece dell'ebraico

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

Tuttavia, per qualche ragione, il testo appare in Gibberish invece di ebraico:

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

duro quando annuso il traffico con Fiddler o visualizzare il sito web nel browser, lo vedo in ebraico :

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

proposito, il codice html contiene meta-tag che definisce la codifica, che è utf-8. Ho provato a codificare il testo in utf-8 ma è ancora in parole senza senso. Ho provato a deocederlo usando utf-8, ma genera l'eccezione UnicodeEncodeError. Ho dichiarato che sto usando utf-8 nella prima riga dello script. Inoltre, il problema si verifica anche quando invio la richiesta con il modulo integrato urllib.

Ho letto il Unicode HOWTO, ma non riuscivo ancora a risolverlo. Ho letto anche molti thread qui (entrambi sull'eccezione UnicodeEncodeError e sul perché l'ebraico si trasforma in un linguaggio senza senso in Python) ma non riesco ancora a risolverlo.

Sto usando Python 2.7.9 su un computer Windows. Sto eseguendo il mio script in Python IDLE.

Grazie in anticipo.

+0

È necessario utilizzare .content anziché il testo –

risposta

6

Il server non sta dichiarando la codifica correttamente.

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

Set text.encoding prima di accedere text.text.

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

Grazie mille! Non lo troverei mai da solo Grazie ancora! – ohad987