python unicode e me stesso: tre maledizioni

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
venerdi_12
Packager
Packager
Messaggi: 258
Iscritto il: sab lug 09, 2005 0:00
Nome Cognome: Luciano Fattore
Kernel: 3.0
Desktop: kde-4.7.0
Distribuzione: archlinux
Località: Lusciano (Ce)

python unicode e me stesso: tre maledizioni

Messaggioda venerdi_12 » gio feb 24, 2011 11:17

Scusate ragazzi,
mi aiutate ad uscire da questa cosa?
Allego un frammento di codice che
-si collega alla pagina del fatto quotidiano contenente i links agli articoli del giornale odierno (in realtà quello di due giorni fa ma è uguale)
-fa delle sostituzioni per correggere errori nell'html
-scrive i link che mi interessano in una lista

Codice: Seleziona tutto

import mechanize, codecs, re, string, os,
from BeautifulSoup import BeautifulSoup, NavigableString
from re import findall

links = []

BASE_URL = (u'http://www.ilfattoquotidiano.it/giornale-cartaceo/?g=22-02-2011')

br = mechanize.Browser()
datalinks = br.open(BASE_URL).get_data()
datalinks = re.sub("scr\'\+\'ipt", "script", datalinks)
datalinks = re.sub('</script<', '</script><', datalinks)
datalinks = re.sub(u'\xe8','e\'',datalinks)

souplinks = BeautifulSoup(datalinks)
for anchor in souplinks.findAll('a',href=re.compile('www.ilfattoquotidiano.it/2011/02/22')):
    links.append(anchor['href'])


Guardiamo ad esempio

Codice: Seleziona tutto

links[5]

il risultato è

u'http://www.ilfattoquotidiano.it/2011/02/22/%e2%80%9caltro-che-diplomazia-le-tribu-lo-cacceranno%e2%80%9d/93288/?nocache'

ovviamente se passo questo link al browser di mechanize

Codice: Seleziona tutto

data = br.open(links[5]).get_data()

l'errore è:
KeyError: u'\xe2'

Il link corretto è
[url]http://www.ilfattoquotidiano.it/2011/02/22/“altro-che-diplomazia-le-tribu-lo-cacceranno”/?nocache[/url]

Sti maledetti apici, ma anche altri caratteri speciali, fanno un casino pazzesco e sul sito del fatto ne usano a iosa.

Mi date una mano ad uscirne? Grazi

odiusseus
Linux 2.4
Linux 2.4
Messaggi: 352
Iscritto il: sab giu 30, 2007 14:09
Slackware: 13.0
Kernel: 2.6.32.2
Desktop: kde
Località: roma/vibo valentia
Contatta:

Re: python unicode e me stesso: tre maledizioni

Messaggioda odiusseus » gio feb 24, 2011 19:33

ciao se le hai copiato da una parte all'altra il link...riscrivi da capo solo quei simboli. A me basta fare così...oppure apri con l'editor di testo di kde (kwrite) che mette al momento del salvataggio del file con estensione .py l'indicazione a python per i caratteri unicode..o una cosa simile..

Codice: Seleziona tutto

#!/usr/bin/env python
# -*- coding: utf-8 -*-

ciao


Torna a “Programmazione”

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite