Forum Programmation.shell Extraire des données avec la commande grep

Posté par  . Licence CC By‑SA.
Étiquettes :
-5
27
avr.
2019

Bonjour…

je veux extraire des informations sur le site : aquafortain.site https://www.programmefoot.com/widget (programe foot) on utilisant la commande grep et sed je suis arrivé
à ce résultat

    Aujourd'hui - vendredi 26 avril
    20:00 Nancy AC Ajaccio
    20:00 Valenciennes Niort
    20:00 Orléans Troyes
    20:00 Grenoble Foot 38 Béziers
    20:00 Clermont Paris FC
    20:00 Gazélec Ajaccio Sochaux
    20:00 Châteauroux Le Havre
    20:00 Red Star Metz
    20:30 Augsbourg Bayer Leverkusen
    20:45 Bordeaux Olympique Lyonnais
    21:00 Liverpool Huddersfield Town
    21:30 Rio Ave FC Porto
    13:00 Athletic Bilbao Deportivo Alavés
    13:30 Tottenham Hotspur West Ham United
    15:00 Bologne Empoli
    15:00 Brest Lens
    ..... .....  .....

le probleme c'est que j'arrive pas a intégrer la date et l'heur
athletic bilbao et Alaves se joue le samedi à 13.00

j'ai utilisé cette commande mais sa ne marche pas..
pour afficher la date a côté de l'heur

grep -o '><table><caption>\([^"<]*\)</caption><tbody><tr><td.*\([^"<]*\)</td><td'

code source :

                Demain - samedi 27 avril
                </caption><tbody><tr><td class="competition txtcenter hide-smartphone"><img src="https://images.programmefoot.com/competition/40x40/7.png" alt="Logo La Liga Santander" 
                /></td><td class="hour txtcenter">13:00</td><td class="match txtcenter"><span
  • # you can't parse html with regex

    Posté par  (site web personnel) . Évalué à 5.

    https://stackoverflow.com/posts/1732454/revisions

    Pour ce genre d'usage je recommande HTML::Parser (et possiblement WWW::Mechanize). Si tu insistes pour faire ça avec des regex, ça peut aider de faire passer le tout par html2text ou même just sed/awk avant d'essayer d'extraire ce qui t'intéresse.

    pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.

    • [^] # Re: you can't parse html with regex

      Posté par  . Évalué à 5.

      Salut :)

      Tiens, il y a de l'écho par ici :)

      Bon courage pour faire comprendre ça à l'OP, moi j'arrête ;)

      Matricule 23415

    • [^] # Re: you can't parse html with regex

      Posté par  (Mastodon) . Évalué à 4. Dernière modification le 27 avril 2019 à 10:57.

      Oui, une façon assez sympa de récupérer les données d'une page web c'est de laisser faire les pros :
      lynx <url> --dump sort le rendu en texte brut, yapuka parser classiquement (awk, sed, grep…).

      En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

      • [^] # Re: you can't parse html with regex

        Posté par  . Évalué à -6. Dernière modification le 27 avril 2019 à 17:47.

        je m'explique ma commande pour avoir l'heure c'est :

        grep -o 'hour txtcenter">\([^"<]*\)</td><td' 
        ```    sed -i 's/hour txtcenter">//' 
            sed -i 's|</td><td||' 
        
        resultat:
        
        15:30
        15:30
        15:30
        16:00
        16:15
        18:00
        18:00
        18:30
        ....
        
        ce que je veux c'est ajouter la date mais je ne sais pas comment 
        avec awk ou grep sed
        
        16:15
        18:00
        18:00
        18:30
        28 avril
        18.30
        20.00
        ....
        
        @_kaos_ @Krunch comment expliquez vous le tableau dans cette page:
        gecif.net/articles/linux/shell.html
        
        • [^] # Re: you can't parse html with regex

          Posté par  . Évalué à 3.

          Salut :)

          Si tu veux essayer d'avancer, tu peux lire le Advanced Bash-Scripting Guide

          Ça ne te donnera pas tout, pas le parsing HTML entre autre, mais des bases saines.

          Pour ce qui est du tableau, aucun avis. C'est juste l'intitulé des pages de man, non ? J'ai même pas le courage de vérifier….

          Matricule 23415

    • [^] # Re: you can't parse html with regex

      Posté par  . Évalué à 3. Dernière modification le 28 avril 2019 à 08:17.

      pup (xpup) est ton ami : https://stackoverflow.com/questions/4994113/about-parsing-html-and-extract-data-using-shell

      je pense qu'on a déja évoqué cette problématique plusieurs fois ici. Cela t'évitera d'avoir à apprendre un nouveau langage (python, ruby, …) et te permettra de parser le HTML de manière très puissante. Il y a cependant un effort à faire : apprendre a utiliser cet outil.

  • # grep -Po

    Posté par  (site web personnel) . Évalué à 2. Dernière modification le 27 avril 2019 à 20:59.

    permet de prendre d'une chaine à une autre

    echo "abc123def456"| grep -Po '(?=abc).*(?=def)'
    abc123

    la syntaxe est différente si tu veux ou pas la première ou dernière chaine

    echo "abc123def456"| grep -Po '(?=abc).*(?<=def)'
    abc123def

    autre exemple

    echo "abc123def456"| grep -Po '(?<=abc).*(?!=def)'
    123def456

    Recherche motifs prospectifs, en anglais regex lookahead assertion, lookbehind assertion

    ウィズコロナ

    • [^] # Re: grep -Po

      Posté par  . Évalué à -7.

      comment faire pour mettre chaque chainnes dans une ligne

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.