BASH: efffacer balise <script> avec sed?

Résolu
gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   -  
dubcek Messages postés 18627 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 :)

9 réponses

  1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
     
    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
  2. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      On peut avoir un aperçu de "echo $HTM" ?
      0
  3. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
     
    Biensur:

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


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

      Alors je reformule : Peut-on avoir le contenu de HTML/page.html ? ;-)
      0
  4. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Et tu veux faire quoi exactement ?

      Afficher la page d'accueil de Gogole en mode texte ?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
     
    Oui seulement le texte brute qui est affiché sur la page sans aucunes balises.
    0
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      curl -s http://www.google.fr | w3m -dump -T text/html
      0
  7. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
    2. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
       
      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
    3. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
  8. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      Rajoute ça à la fin :
      | sed 's/&[^;]*;//g'
      0
  9. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    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
    1. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
    2. zipe31 Messages postés 34620 Date d'inscription   Statut Contributeur Dernière intervention   6 501
       
      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
    3. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
       
      tout à fait, mais il est est installé chez moi d'office, alors que je n'ai pas w3m
      0
  10. gardiendelanuit Messages postés 1772 Date d'inscription   Statut Membre Dernière intervention   267
     
    Merci beaucoup encore ;) , j'ai ré-arangé tout ça après un bug et ca marche.

    Problème résolu :)
    0