BASH: efffacer balise <script> avec sed?

Résolu/Fermé
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 - 19 déc. 2011 à 18:35
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 - 21 déc. 2011 à 08:14
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 420
19 déc. 2011 à 18:44
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
Modifié par gardiendelanuit le 19/12/2011 à 19:00
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 420
19 déc. 2011 à 19:01
On peut avoir un aperçu de "echo $HTM" ?
0
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
19 déc. 2011 à 19:05
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 420
19 déc. 2011 à 19:06
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
Modifié par gardiendelanuit le 19/12/2011 à 19:08
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 420
19 déc. 2011 à 19:09
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
19 déc. 2011 à 19:10
Oui seulement le texte brute qui est affiché sur la page sans aucunes balises.
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 420
19 déc. 2011 à 19:14
curl -s http://www.google.fr | w3m -dump -T text/html
0
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
19 déc. 2011 à 19:19
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 420
19 déc. 2011 à 19:29
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
Modifié par gardiendelanuit le 20/12/2011 à 12:36
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 420
20 déc. 2011 à 13:10
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
Modifié par gardiendelanuit le 20/12/2011 à 15:39
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 420
20 déc. 2011 à 15:51
Rajoute ça à la fin :
| sed 's/&[^;]*;//g'
0
dubcek Messages postés 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
20 déc. 2011 à 15:56
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 420
20 déc. 2011 à 16:04
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 dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 420
20 déc. 2011 à 16:09
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 18758 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 24 décembre 2024 5 623
21 déc. 2011 à 08:14
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 jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
20 déc. 2011 à 16:12
Merci beaucoup encore ;) , j'ai ré-arangé tout ça après un bug et ca marche.

Problème résolu :)
0