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.
Rispondi
Avatar utente
venerdi_12
Packager
Packager
Messaggi: 258
Iscritto il: sab 9 lug 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

Messaggio 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

odiusseus
Linux 2.x
Linux 2.x
Messaggi: 352
Iscritto il: sab 30 giu 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

Messaggio 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

Rispondi