PDA

View Full Version : [python] problema con urllib.urlretrieve()


Torav
13-04-2008, 16:49
ola :)
sto scrivendo un programmino semplice semplice che permette di scaricare testi di canzoni dal web. Utilizzao urlretrieve per scaricare la pagina html contenente il testo, che poi passo ad un parser che mi tira fuori quello che mi serve.
Ho un unico problema: quando nella pagina sono contenute lettere accentate, quando vado a salvarmi la pagina queste si trasformano in caratteri malsani (lettere accentate -> strane lettere con dieresi ecc). Se mi vado a vedere la sorgente direttamente da un browser questo (ovviamente :p ) non è così.
In pratica credo che urlretrieve faccia questi casini, volevo sapere se c'è un modo per evitare questo problema, o almeno una qualche soluzione (anche zozza :D ). Dimenticavo, il programma *dovrebbe* essere portabile (uso le wx), ma lo sto sviluppando su windows.

cdimauro
14-04-2008, 08:13
Non è un problema di urlretrieve, ma di codifica. L'API che usi ti ritorna i dati "grezzi", cioé esattamente come li passa il server.

Poi bisogna che tipo di codifica viene usata per visualizzare correttamente le informazioni.

Molto probabilmente la codifica usata sarà UTF-8, per cui devi convertire la stringa che hai ottenuto usando questa codifica.

Prova con s.decode('utf-8') oppure con s.decode('utf8') e vedi se riesci a risolvere.

Torav
14-04-2008, 11:40
grande! spulciando un po' di roba sul web sono riuscito a risolvere utilizzando unicode(stringa, "utf-8") e stringa.encode("utf-8") per ritornare indietro! :D
grazie mille! :)

cdimauro
14-04-2008, 13:12
Ma figurati: è un piacere aiutarti, se possibile.

Sull'argomento Python & Unicode avevo conservato un link molto chiaro ed esaustivo. Ecco qui: http://www.amk.ca/python/howto/unicode spero possa esserti utile. :)