BASH: efffacer balise <script> avec sed?

Résolu
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je souhaite faire un script SH qui puisse filtré les balises HTML et n'en garder que le texte brute...
Jusque là j'ai plus ou moins réussi et ce qui me pause problème aujourd'hui, c'est les balises html du genre

<script> code </script>


En effet je sais enlever tout ce qui se trouve entre les chevrons <*> mais dans les cas particuliers comme celui-ci j'aimerais retirer également ce qui se trouve entre les balises <script> et </script> (pareil pour les commentaires par la même occasion).

J'ai essayé avec le sed en vain... peut-être que je n'utilise pas la bonne syntax. Google ne m'a pas aidé sur ce coup et je compte sur votre aide.

Merci d'avance pour vos réponses :)

A voir également:

9 réponses

zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

$ cat plop 
<script> code </script>
<bla>bli</bla>
<script> code </script>
<blabla>blibli</blabla>

$ sed 's#<script>.*</script>##;s#<[^>]*>##g' plop 

bli

blibli

$

;-))
0
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Merci de ta réponse rapide malheuresement comme celà ça ne marche pas : /

txt_brute=$(echo $HTML | sed 's|<[^>]*>||g' | sed 's|{[^>]*}||g' | sed 's|[[^>]*]||g' | sed 's#<script>.*</script>##;s#<[^>]*>##g')
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
On peut avoir un aperçu de "echo $HTM" ?
0
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Biensur:

HTML=$(cat HTML/page.html | tr "\n" " " | tr "\r" " ")


Je met tout en ligne pour que le sed le traite correctement.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Je pensais que $HTML était le fichier ;-((

Alors je reformule : Peut-on avoir le contenu de HTML/page.html ? ;-)
0
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Le lien HTML est rentré par l'utilisateur dans ce cas la c'est le code HTML de la page d'accueil de google.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Et tu veux faire quoi exactement ?

Afficher la page d'accueil de Gogole en mode texte ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Oui seulement le texte brute qui est affiché sur la page sans aucunes balises.
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
curl -s http://www.google.fr | w3m -dump -T text/html
0
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Oui je connais w3m seulement je ne suis pas sûr qu'elle soit installé sur les versions de l'iut car enfaite c'est un projet que nous devons faire par lequel nous ne pouvons utiliser que les commandes de base de linux
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
En même temps "google" est un très mauvais exemple, le code source est une grosse m*rde à parser ;-((

Honnêtement tu ne peux concevoir le parsage d'une page html qu'en sachant à l'avance comment est conçu le code source et ce que tu dois faire...
0
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Bien d'accord malheuresement c'est un défi que l'on nous a lancé : / Je verrais ce que je peux faire et te tien au courant merci encore pour ton aide :)
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Essaie ça :

$ wget -q -O- http://www.google.fr | iconv -f ISO-8859-1 -t UTF-8 | sed 's#</*script>\|</*style[^>]*>#\n&\n#g' | sed '\#<script>#,\#</script>#d' | sed '\#<style[^>]*>#,\#</style>#d' | sed 's#<[^>]*>##g'
Google



Web Images Vidéos Maps Actualités Shopping Gmail Plus »iGoogle | Historique Web | Paramètres | ConnexionFrance&nbsp;Recherche avancéeOutils linguistiquesSolutions publicitairesSolutions d'entrepriseÀ propos de GoogleGoogle.com in English© 2011 - Confidentialité 

$
:-))
0
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Whaou.. Je n'en espérais pas tant :o en effet cette solution semble être plus efficace^^' Il y a certaines suites de caractere tel que les
&nbsp 
qui passe encore mais je vais chercher le moyen de les éliminer si je trouve >.>
Merci beaucoup de ton aide :))
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Rajoute ça à la fin :
| sed 's/&[^;]*;//g'
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
hello
et avec GET
$ GET -o text https://www.google.fr/?gws_rd=ssl | iconv -f ISO-8859-1 -t UTF-8
Web Images Vidéos Maps Actualités Shopping Gmail Plus »iGoogle |
   Historique Web | Paramètres | Connexion
   France


   Recherche avancéeOutils linguistiques


   Solutions d'entrepriseÀ propos de GoogleGoogle.com in English

   © 2011 - Confidentialité
$ 
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Salut,

Effectivement ;-))

Ce qui correspondrait davantage à sa demande :
c'est un projet que nous devons faire par lequel nous ne pouvons utiliser que les commandes de base de linux

Vu que l'emploi de w3m ne semblait pas convenir ;-(
0
zipe31 Messages postés 36402 Date d'inscription   Statut Contributeur Dernière intervention   6 431
 
Quoi que...

$ GET -o text  http://www.google.fr
The HTML-Tree distribution need to be installed for the -o option to be used.


;-((
0
dubcek Messages postés 18789 Date d'inscription   Statut Contributeur Dernière intervention   5 637
 
tout à fait, mais il est est installé chez moi d'office, alors que je n'ai pas w3m
0
gardiendelanuit Messages postés 1770 Date d'inscription   Statut Membre Dernière intervention   264
 
Merci beaucoup encore ;) , j'ai ré-arangé tout ça après un bug et ca marche.

Problème résolu :)
0