Pagina 1 di 1

python unicode e me stesso: tre maledizioni

Inviato: gio 24 feb 2011, 11:17
da venerdi_12
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 ... 8/?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 è
http://www.ilfattoquotidiano.it/2011/02 ... /?nocache

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

Re: python unicode e me stesso: tre maledizioni

Inviato: gio 24 feb 2011, 19:33
da odiusseus
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