Utilisation html_to_text
Réponses:
2
Visites:
0
Up one level
Vous devez être un membre enregistré pour contribuer sur ce forum.
Inscrivez-vous maintenant
Utilisation html_to_text
Posté par
jinpol
le
24/02/2010 14:36
Salut tout le monde,
j'ai un problème quand je veux utiliser html_to_text de portal_transforms. En fait, je récupère un texte html, et je voudrais enlever toutes les balises de celui-ci afin d'en récupérer le texte brut. J'ai vu que dans la partie portal_transforms de ma ZMI, il y a une fonction qui s'appelle html_to_text. J'ai donc fait un petit script python dans lequel je fais : from Products.CMFCore.utils import getToolByName pt = getToolByName(context, 'portal_transforms') data = pt.html_to_text(val) return data Et quand j'appelle cette fonction via une page de mon site, j'ai le message d'erreur suivant : * Expression: <PythonExpr context.html2text('<html><p>coucou</p></html>')> Names: {'container': <PloneSite at /ascofi>, 'context': <ATFolder at /ascofi/actualites-et-agenda/news>, 'default': <object object at 0x007BA528>, 'here': <ATFolder at /ascofi/actualites-et-agenda/news>, 'loop': {u'item': <Products.PageTemplates.Expressions.PathIterator object at 0x11BEBFF0>}, 'nothing': None, 'options': {'args': ()}, 'repeat': <Products.PageTemplates.Expressions.SafeMapping object at 0x11BA6490>, 'request': <HTTPRequest, URL=http://10.27.0.130:13080/ascofi/actualites-et-agenda/news/folder_summary_news>, 'root': <Application at >, 'template': <ZopePageTemplate at /ascofi/folder_summary_news used for /ascofi/actualites-et-agenda/news>, 'traverse_subpath':, 'user': <PropertiedUser 'admin'>} * Module Products.PageTemplates.ZRPythonExpr, line 49, in __call__ __traceback_info__: context.html2text('<html><p>coucou</p></html>') * Module PythonExpr, line 1, in <expression> * Module Shared.DC.Scripts.Bindings, line 313, in __call__ * Module Shared.DC.Scripts.Bindings, line 350, in _bindAndExec * Module Products.PythonScripts.PythonScript, line 328, in _exec * Module None, line 4, in html2text <PythonScript at /xxxxx/html2text used for /xxxxx/actualites-et-agenda/news> Line 4 AttributeError: __call__ Et je ne sais pas d'où vient l'erreur. Quelqu'un peut-il m'aider ??? Merci d'avance pour vos réponses. Tchuss, @+, jinpol... |
-
Re: Utilisation html_to_text
Posté par jinpol le 24/02/2010 15:10Bon, au final, j'avais tout faux, c'est comme cela qu'il faut faire apparemment :
from Products.CMFCore.utils import getToolByName
data = "<html>"+val+"</html>"
pt = getToolByName(context, 'portal_transforms')
res = pt.convertTo('text/plain',val,mimetype='text/html')
return res
Sauf que maintenant,j'ai le message d'erreur suivant :
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 18: ordinal not in range(12
Il y a quelque chose qui ne lui plait pas dans mon code html, mais je ne sais pas quoi, il a été généré par l'éditeur de texte Kupu... -
Re: Utilisation html_to_text
Posté par jinpol le 24/02/2010 23:13Re tout le monde,
je reviens avec quelques précisions...
En fait, dans un script python, je récupère les x premiers caractères d'une News pour ensuite les afficher dans une collection de News. Cela permet ainsi de voir le début des News.
Le problème qu'il y a, c'est que ces News sont en HTML, et donc, si je coupe le code au milieu, mon code HTML n'est plus correct, car il peut manquer des balises...
J'aimerai donc convertir mon code html en texte brut, et pour cela, j'utilise :
pt = getToolByName(context, 'portal_transforms')
res = pt.convertTo('text/plain',val,mimetype='text/html')
Le problème, c'est que dès qu'il y a un caractère accentué ou spécial, j'ai une erreur du type :
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 18: ordinal not in range(12
Alors j'imagine que c'est un problème d'encodage de ma chaine de caractère que je récupère au début, mais comment faire pour contourner ce problème.
Y'aurai bien la solution de remplacer tous les caractères spéciaux, en faisant par exemple :
val = val.replace('é','e')
mais c'est lourd.
Est-ce que quelqu'un a une solution à mon problème ???
Merci d'avance pour vos réponses.
Tchuss, jinpol...




