[bash]supprimer balises html

supprimer balises html [bash] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 10-05-2007 à 11:27:48    

Voila, tout est dans le titre:
 
J'ai un fichier text dans lequel je voudrais supprimer toutes les balises html et ce qu'il y' a dans ces balises.
 
Merci beaucoup d'avance

Reply

Marsh Posté le 10-05-2007 à 11:27:48   

Reply

Marsh Posté le 10-05-2007 à 11:37:46    

C'est pas si con que ça...
 
Le probleme c'est que mon fichier fait 20Mo et que j'ai un pc pourri
 
 
Merci quand meme

Reply

Marsh Posté le 10-05-2007 à 11:38:32    

Tu peux utiliser l'outils "sed" par exemple qui va lire toutes tes ligne de ton fichiers une par une, et en utilisant une expression régulière tu pourra supprimer ta balise.  
Mais cela va te poser 2 problème:
-il va te faloir spécifier tout les type de balise html qui tu veux enlever (ça dans tout les cas tu risque d'être obliger de le faire, a moins d'avoir une liste des balises html qui existe)
-ça ne te suprimera que les balise et pas ce qui se trouve entre le balise d'ouveture et celle de fermeture

Reply

Marsh Posté le 10-05-2007 à 11:54:38    

Tu peux utiliser perl sinon, il propose des modules qui permettent de parser du html et de te le retranscrire en texte pur. J'ai jamais utilisé, mais je sais que ça existe ;)


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 10-05-2007 à 11:59:16    

tchouvince a écrit :

Voila, tout est dans le titre:

 

J'ai un fichier text dans lequel je voudrais supprimer toutes les balises html et ce qu'il y' a dans ces balises.

 

Merci beaucoup d'avance

 

Tu es sûr que tu veux supprimer ce qu'il y a dedans ? Ou garder ce qu'il y a dedans (bref "débaliser" ) ?
Dans le doute voici une solution pour tout virer, mais plus fine que de zapper <html>blabla</html> parce que je pense (à tort ?) que tu veux débaliser... Bref je prépare le terrain.

 

vim fichier.txt

 

on va chercher tout ce qui est de la forme <toto>blabla</toto> et le virer

 

dans vim ca revient à taper

   :%s;truc;remplaçant;gc    


(gc pour global (partout) et confirmation)

 

bref nous ca sera :

   :%s;truc;;gc    


vu qu'on veut supprimer

 


en détail ce qu'on cherche c'est (en rouge la version regexp) :
<
<
suivi de :un nom de balise, n'importe quoi sauf > en fait
[^>]*
suivi de : >
>
suivi de : n'importe quoi sauf <
[^<]*
suivi de : <
<
suivi de : /
/
suivi de : le même nom que la première balise (attention si elle avait des attributs genre <toto id="xxx"> faut que toto)
un peu subtil, voire plus bas
suivi de : >
>

  


*Plus bas c'est ici :D
en fait la première balise on va considérer que c'est non pas comme écrit plus haut :
    <[^>]*>
mais plutôt :
<
<
suivi de : n'importe quoi qui n'est pas un espace (comme ca dans <toto id="xxx"> on capte le que le toto)
[^ ]*
suivi de : n'importe quoi qui n'est pas >
[^>]*
suivi de : >
>
Du coup on peut mettre des parenthèses autour du morceau qui choppe le toto, pour le sauvegarder et s'en servir au moment où on cherchera la balise fermante.

   

Donc à la louche je ferai un :

   :%s;<\([^ ]*\)[^>]*>[^<]*</\1>;;gc


\1 rappelant le truc choppé par ce qui est entre parenthèse

 

A tester :o


Message édité par Xavier_OM le 17-06-2007 à 00:14:08

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 10-05-2007 à 12:03:53    

Pour toutes les solutions à base de scripts, il faut faire vraiment attention à ce que le HTML présent dans ton fichier soit bien construit. Sinon, tu risques d'obtenir n'importe quoi, par exemple si des balises ouvertes ne sont pas fermées, ou en cas de mauvais "nesting" des balises (désolé je sais pas comment on dit en français), etc.


---------------
TriScale innov
Reply

Marsh Posté le 10-05-2007 à 12:12:45    

franceso a écrit :

Pour toutes les solutions à base de scripts, il faut faire vraiment attention à ce que le HTML présent dans ton fichier soit bien construit. Sinon, tu risques d'obtenir n'importe quoi, par exemple si des balises ouvertes ne sont pas fermées, ou en cas de mauvais "nesting" des balises (désolé je sais pas comment on dit en français), etc.

 


Ah oué t'as raison, en fait si mon truc marche ca ne sera que pour du xml (xhtml ca passe) :/
Ou alors on cherche juste <html>.*</html> et on delete :D


Message édité par Xavier_OM le 10-05-2007 à 12:13:24

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 10-05-2007 à 12:44:00    

D'façon, le html kipu et qui est mal formatté, ça mérite pas d'être nettoyé :o


---------------
Wedge#2487 @HS -#- PW: +∞ -#- Khaz-Modan/Boltiz @WoW
Reply

Marsh Posté le 10-05-2007 à 12:55:43    

franceso a écrit :

Pour toutes les solutions à base de scripts, il faut faire vraiment attention à ce que le HTML présent dans ton fichier soit bien construit. Sinon, tu risques d'obtenir n'importe quoi, par exemple si des balises ouvertes ne sont pas fermées, ou en cas de mauvais "nesting" des balises (désolé je sais pas comment on dit en français), etc.


Imbrication :o


---------------
FREE DATOUNE
Reply

Marsh Posté le 10-05-2007 à 13:55:31    

Jeddo a écrit :

Imbrication :o

thanks :jap:


---------------
TriScale innov
Reply

Marsh Posté le 10-05-2007 à 13:55:31   

Reply

Marsh Posté le 10-05-2007 à 14:02:12    

Je suis d'accord avec Xavier_OM pour sa dans vim seulement ça ne va pas marcher avec les balises unique genre "<br />" ou <img ... /> ??  
Ou est ce que je dit une connerie?

Reply

Marsh Posté le 10-05-2007 à 14:05:22    

electro86 a écrit :

Je suis d'accord avec Xavier_OM pour sa dans vim seulement ça ne va pas marcher avec les balises unique genre "<br />" ou <img ... /> ??  
Ou est ce que je dit une connerie?


 
euh non en effet, les balises autofermantes vont rester faudra les traiter aussi :/
et pis ya aussi les balises genre <input>, pas forcément fermées :(
et pis de tout façon en html (le vrai le moche :D) on peut faire de la merde genre <b><i>toto</b></i>  [:ruisseau de larmes]  
 
Bref parser du html c'est bon pour la team mozilla :D


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 10-05-2007 à 14:10:46    

[quote=Xavier_OM]
Bref parser du html c'est bon pour la team mozilla :[/quote]
 
J'approuve !!! :p

Reply

Marsh Posté le 10-05-2007 à 14:48:21    

+1
 
Le seul salut possible, c'est d'utiliser du XHTML et un parser de XML.
 
Sinon, je pense que la seule solution est d'utiliser l'aide d'un bon éditeur de texte pour repérer les balises cherchées, et de tout contrôler à la main.


---------------
TriScale innov
Reply

Marsh Posté le 10-05-2007 à 14:58:38    

Oui mais si il sagit d'un fichier de 20 mo... ça doit faire un paquet de ligne donc je ne sais pas si à la main ca va pas lui prendre 10 ans!

Reply

Marsh Posté le 10-05-2007 à 15:02:34    

+1, 20Mo de texte, ca fait mal aux yeux  :cry:  


---------------
-_- http://www.scienceshopping.com -_-
Reply

Marsh Posté le 10-05-2007 à 15:11:43    

Pour transformer du html pourri en xhtml, il y a tidy. :o


---------------
C'est pas bon, Neriki, tu recommences à glander, là. :o
Reply

Marsh Posté le 10-05-2007 à 15:25:51    

Code :
  1. #!/usr/bin/php
  2. <?php
  3. $lines = file('/tmp/index.html');
  4. foreach ($lines as $line) {
  5.     echo strip_tags($line);
  6.     echo "\n";
  7. }
  8. ?>


 
Un début peut être.

Reply

Marsh Posté le 11-05-2007 à 12:18:07    

lynx -dump  t'interprétera le hachetemeuleu et écrira du texte, à voir.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 11-05-2007 à 13:15:15    

tchouvince a écrit :


J'ai un fichier text dans lequel je voudrais supprimer toutes les balises html et ce qu'il y' a dans ces balises.


Mjules a écrit :

lynx -dump  t'interprétera le hachetemeuleu et écrira du texte, à voir.


 
C'est ce que j'avais écris puis effacer puisqu'en fait ca correspond pas à la demande.


Message édité par l0ky le 11-05-2007 à 13:15:29
Reply

Marsh Posté le 14-05-2007 à 10:37:02    

Si c'est pour les balises _et_ ce qu'il y a dedans...
 
mv tonfichier /dev/null
touch tonfichier
 
mais bon... j'vois pas l'utilité :p
 
Pour supprimer uniquement les balises, pourquoi ne pas simplement supprimer les caractères situés entre un < et un > !? (sauf s'il y a de ça dans le texte, hors balises)

Reply

Marsh Posté le 14-05-2007 à 10:48:02    

Je vois pas ce que vous avez contre mon bout de php. C'est surement bcp plus efficace qu'une regex.


Message édité par M300A le 14-05-2007 à 10:48:14
Reply

Marsh Posté le 06-09-2007 à 17:51:10    

C'est juste que ça ne fait pas ce qui est demandé et n'est pas facilement transformable en quelque chose qui fait ce qui est demandé.
 
Mais sinon, on n'a rien contre ton script et il est assez efficace pour faire ce qu'il fait.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed