Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

HTMLParser et encodage

4 réponses
Avatar
FB
Bonjour

Ma question est toute simple, j'utilise HTMLParser pour r=E9cup=E9rer
certaines infos sur des pages web, et j'ai remarqu=E9 que certains
caract=E8res genre "=E9" ne passaient pas..

J'imagine qu'il y a quelquechose =E0 r=E9gler au niveau de l'encodage,
mais j'ai rien trouv=E9 dans la doc python.

Est-ce que quelqu'un qui a d=E9ja ete confronte a ce probleme pourrait
m'aiguiller un peu ?

4 réponses

Avatar
Laurent Pointal
Bonjour

Ma question est toute simple, j'utilise HTMLParser pour récupérer
certaines infos sur des pages web, et j'ai remarqué que certains
caractères genre "é" ne passaient pas..

J'imagine qu'il y a quelquechose à régler au niveau de l'encodage,
mais j'ai rien trouvé dans la doc python.

Est-ce que quelqu'un qui a déja ete confronte a ce probleme pourrait
m'aiguiller un peu ?



Oui, j'ai eu le problème et je l'ai résolu comme ça:


from HTMLParser import HTMLParser
import codecs


class AnalyseParser(HTMLParser):
# mes handlers


parser = AnalyseParser()
f = codecs.open(filenamein, "rU", "iso-8859-15")
parser.feed(f.read())



Bien sûr, remplacer le "iso-8859-15" par l'encodage qui va bien.

A+

Laurent.

Avatar
FB
Mille merci, je vais tester tout ca..

En fait je me suis apercu que mon probleme ne venait pas des "é" mais
des entités html "é" par exemple..

Le principe est le meme je pense, reste a trouver une librairie qui
fait la conversion.
Avatar
Laurent Pointal
Mille merci, je vais tester tout ca..

En fait je me suis apercu que mon probleme ne venait pas des "é" mais
des entités html "é" par exemple..

Le principe est le meme je pense, reste a trouver une librairie qui
fait la conversion.



Doc Python 2.4:

13.4 htmlentitydefs -- Definitions of HTML general entities

entitydefs
A dictionary mapping XHTML 1.0 entity definitions to their replacement
text in ISO Latin-1.

name2codepoint
A dictionary that maps HTML entity names to the Unicode codepoints.


Avec du s.replace(), ça devrais le faire.

Avatar
FB
Merci :) Ca le fait en effet ! Vraiment Python, quel magnifique langage
!

Par rapport a HTMLParser, j'ai parfois des comportements etranges : il
decroche en plein milieu d'une page en générant une belle
HTMLParserError (il detecte un EOF la ou il n'y en a pas...).

Sachant que je veux utiliser mon truc pour parser n'importe quel site
web, il y a une difference importante avec le parser de htmllib ?