Supression d'un NOSCRIPT imbriqué dans un SPAN [SED/XHTML] - Codes et scripts - Linux et OS Alternatifs
Marsh Posté le 19-05-2008 à 19:49:28
Bonsoir,
Je n'ai pas décortiqué la réponse, mais je crois que la réponse est ici :
http://linuxfr.org/forums/26/7199.html
vw.
Marsh Posté le 19-05-2008 à 20:31:23
Merci de ta réponse.
$ cat sed.test |
Ça n'a pas l'air de fonctionner.
Je ne vois pas non plus comment sélectionne les <NOSCRIPT> seulement s'ils sont imbriqués dans un <SPAN>.
Marsh Posté le 19-05-2008 à 20:49:42
Hello,
sans avoir testé je suis pas sur que sed fasse l'affaire, il serai peut être mieux de passer par un script (perl par ex.) afin de récuperer, via regexp, les balises span puis noscript.
Marsh Posté le 19-05-2008 à 20:54:51
Tu trouveras de bons indices ici : Pattern matching across several lines
http://www.cs.utk.edu/~vose/c-stuff/sed_tutorial.html
Mais c'est sur que ce serait sans doute plus propre en perl comme le dit sub1.
vw
Marsh Posté le 19-05-2008 à 22:07:56
moi voila ce que je ferai
-> j'enleverai les newlines en carractère par exemple XXX ,
-> je fais mes changements
-> puis reremplace XXX par un newline.
J'utilise plus particulièrement vim et pour le 1° je tape ceci :%s/\n/ XXX /
Marsh Posté le 19-05-2008 à 22:52:47
je connais pas sed, mais voici un début de solution en perl :
~/tmp> cat jeddo.pl |
~/tmp> cat essai.txt |
~/tmp> ./jeddo.pl essai.txt |
N'hésite pas à demander si tu veux des explications sur la regexp ou le reste du script.
Il y a plein de choses à améliorer, mais c'est sans doute un début... En particulier, il y a peut-être dans la regexp des motifs trop gloutons qui peuvent poser problème.
Marsh Posté le 19-05-2008 à 23:09:26
Pour les cas pathologiques (genre deux NOSCRIPT imbriqués dans le même SPAN), je vois pas comment faire plus joliement qu'en réappliquant plusieurs fois la regexp.
~/tmp> cat jeddo.pl |
~/tmp> cat essai.txt |
~/tmp> ./jeddo.pl essai.txt |
Marsh Posté le 24-05-2008 à 12:04:36
ReplyMarsh Posté le 24-05-2008 à 12:06:57
c'est un peu HS, mais t'es tu penché sur l'extension python BeautifulSoup qui permet de faire plein de truc avec du html et notamment de retirer des éléments particuliers ?
http://www.crummy.com/software/Bea [...] 20elements
Marsh Posté le 24-05-2008 à 12:57:49
Finalement j'ai retenu le script de francesco et intégré à mon script global
Pour sed, la question reste ouverte.
Marsh Posté le 24-05-2008 à 13:02:01
Mjules a écrit : c'est un peu HS, mais t'es tu penché sur l'extension python BeautifulSoup qui permet de faire plein de truc avec du html et notamment de retirer des éléments particuliers ? |
C'est vrai qu'on a aussi une partie de python dans notre traitement, mais ce n'est du tout pas moi qui m'en occupe .
Cela dit, je vais mettre ce lien de côté, ça pourrait servir vu qu'on aura pas mal de prétraitement à faire sur XML/XHTML.
Marsh Posté le 18-05-2008 à 12:15:44
Bonjour à tous.
Je traite actuellement des (vieux) fichiers HTML "non conformes" aux standards. Je les nettoie avec tidy pour qu'il respecte la dtd transitional de XHTML. Seulement tidy ne nettoie pas tout, en particulier il laisse des balises NOSCRIPT imbriquées dans des SPAN, du coup les fichiers XHTML produits ne sont pas valides.
Je souhaite donc faire un prétraitement afin de supprimer ces balises NOSCRIPT, à savoir simplement supprimer ces balises et ce qu'elles contiennent, avant de fournir les fichiers à tidy. Pour l'instant, j'ai une solution provisoire qui ne me satisfait pas, avec sed :
s/<NOSCRIPT.*\/NOSCRIPT>//g
La directive précédente permet de virer toutes les balises NOSCRIPT et ce qu'elles contiennent du fichier (je ne sais pas si ça marche sur plusieurs lignes ou si c'est réduit à une seule ligne), même celles qui sont valides, c'est-à-dire pas forcément dans la portée d'un SPAN.
En résumé, de ça :
un peu de texte <SPAN> différentes
balises dont <NOSCRIPT> du
blabla </NOSCRIPT> encore un peu
de choses ici </SPAN> et là ou là <NOSCRIPT> ça on peut
garder </NOSCRIPT> c'est pas
imbriqué
je veux obtenir ça :
un peu de texte <SPAN> différentes
balises dont
encore un peu
de choses ici </SPAN> et là ou là <NOSCRIPT> ça on peut
garder </NOSCRIPT> c'est pas
imbriqué
Je ne sais pas si c'est faisable avec sed (je lis partout que c'est puissant, l'occasion de le prouver ), mais ça m'arrangerait vu que j'intègre ce prétraitement avec d'autre commandes sed dans un fichier de directives.
Merci de votre aide.
Bon dimanche.
Message édité par Jeddo le 18-05-2008 à 12:18:08
---------------
FREE DATOUNE