Soucis avec les accents et urlopen()

Résolu/Fermé
Hakunamatatáaa Messages postés 11 Date d'inscription mercredi 9 octobre 2013 Statut Membre Dernière intervention 5 décembre 2015 - 5 déc. 2015 à 09:29
Hakunamatatáaa Messages postés 11 Date d'inscription mercredi 9 octobre 2013 Statut Membre Dernière intervention 5 décembre 2015 - 5 déc. 2015 à 18:55
Bonjour à tous,

Je ne connais pas très bien le python nous dirons que je suis en train de l'apprendre par moi-même mais je rencontre un petit problème et je ne trouve pas vraiment la solution : / ça dois avoir avec le type d'encondage mais je sèche un peu là : /

exemple :


from urllib import *
page = urlopen("https://previmeteo.com/fr/2988507-meteo-paris.html")
content = page.read()


mon problème est qu'il ne récupère pas les accents quand je fais un
print content


Je vous remercie d'avance pour l'aide que vous pourrez m'apporter.

3 réponses

nidhogg-59 Messages postés 102 Date d'inscription mercredi 20 juin 2012 Statut Membre Dernière intervention 5 décembre 2015 27
5 déc. 2015 à 11:03
Bonjour,
si j'ai bien compris ton problème, tu peux utiliser la bibliothèque HTMLParser pour transformer les HTMLEntities comme "& egrave;" en "è":
from HTMLParser import HTMLParser
# ton code ici
text = HTMLParser().unescape (content)
print text



Bonne journée!
0
Hakunamatatáaa Messages postés 11 Date d'inscription mercredi 9 octobre 2013 Statut Membre Dernière intervention 5 décembre 2015
Modifié par Hakunamatatáaa le 5/12/2015 à 13:59
Merci pour ta réponse nidhogg :) hélas j'obtiens une erreur :(

File "/home/pi/meteo.py", line 7, in meteo
text = HTMLParser().unescape (content)
File "/usr/lib/python2.7/HTMLParser.py", line 472, in unescape
return re.sub(r"&(#?[xX]?(?:[0-9a-fA-F]+|\w{1,8}));", replaceEntities, s)
File "/usr/lib/python2.7/re.py", line 151, in sub
return _compile(pattern, flags).sub(repl, string, count)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe9 in position 233: ordinal not in range(128)

Je ne sais pas si je me suis bien exprimé mais en gros quand je print content voila un exemple de ce que ça m'affiche :

<title>M▒t▒o gratuite Waterloo - Pr▒visions ▒ 7 jours pour ......

et évidement je voudrais avoir les "é" "è" au lieu de ces "▒" que je ne sait même pas a quoi ça correspond c'est peut être juste le symbole quand y ne sait pas.
Bien à vous,
Hakunamatatáaa.
0
Hakunamatatáaa Messages postés 11 Date d'inscription mercredi 9 octobre 2013 Statut Membre Dernière intervention 5 décembre 2015
5 déc. 2015 à 18:55
Bon finalement j'ai trouvé sur ce site http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/

Si vous lisez une page HTML, l’encoding est souvent déclaré dans la balise META ou dans un header.

Et une fois que vous l’avez, il faut décoder le texte reçu.

La manière la plus simple de faire cela est :

votre_chaine = votre_chaine.decode('nom_du_codec')

et ça fonctionne niquel :)
0