IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Script Bash > Decrypter une page html


Sujet :

Shell et commandes GNU

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 6
    Points
    6
    Par défaut Script Bash > Decrypter une page html
    Bonjour,

    Pour un projet étudiant je dois créer un script bash qui va me permettre de récupérer chaque jour des fichiers en ligne via HTTPS.
    Pour cela je dois venir me connecter à l'aide d'un curl à une adresse que je nommerais http://test.com/.
    Sur cette adresse, chaque jour est déposé un ou plusieurs fichiers .xml comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <tr><td><a href='https://test.com/fichier1.xml' target='_blank'>file1.xml</a><td>09 April 2019 10:00:00</td><td>1 KB</td></tr>
    <tr><td><a href='https://test.com/fichier2.xml' target='_blank'>file2.xml</a><td>09 April 2019 10:00:00</td><td>1 KB</td></tr>
    <tr><td><a href='https://test.com/fichier3.xml' target='_blank'>file3.xml</a><td>08 April 2019 10:00:00</td><td>1 KB</td></tr>
    Débutant en programmation, je me permets de vous solliciter car j'aimerais pouvoir venir récupérer uniquement les fichiers xml du jour au moment où je lance mon script. Pour cela j'aimerais aussi en + en sortie obtenir une liste des urls utilisées, sur l'exemple ci-dessus et en se disant que nous sommes le 9 avril, j'aimerais obtenir une liste de ce style :

    https://test.com/fichier1.xml
    https://test.com/fichier2.xml

    Une idée ?
    Merci par avance.

    Climux

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Bonjour

    Merci par avance.
    Ce n'est pas poli.

    Une idée ?
    Avant le service, on dit "s'il vous plaît".
    Après le service, on dit "merci".
    Dire merci à l'avance signifie que l'autre est un esclave; C'est équivalent à "Merci mon chien".
    Ce n'est pas poli.


    Bon. Tu vas télécharger tes fichiers et en faire la liste.
    Quelle est la difficulté ?
    Qu'as-tu fait ?
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    Bonjour,

    le XML se traite avec XSLT.
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  4. #4
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Citation Envoyé par Climux Voir le message
    je dois (...) curl (...) http://test.com/.
    (...) chaque jour est déposé un ou plusieurs fichiers .xml comme ceci :
    (...) j'aimerais obtenir une liste de ce style :

    https://test.com/fichier1.xml
    https://test.com/fichier2.xml
    un truc comme ça pourrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -sk https://test.com/ | grep -Po "href=.\Khttps://test.com.+?xml"

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Bonjour à tous,

    Tout d'abord merci pour vos retours.

    Citation Envoyé par BufferBob Voir le message
    salut,
    un truc comme ça pourrait fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -sk https://test.com/ | grep -Po "href=.\Khttps://test.com.+?xml"
    @BufferBob, merci de ton aide, cependant j'aimerais établir la liste uniquement avec les fichiers du jour

  6. #6
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par Climux Voir le message
    j'aimerais établir la liste uniquement avec les fichiers du jour


    tu peux donner un exemple clair de ce que tu as au départ et ce que tu attends à l'arrivée stp ?

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Désolé si je n'ai pas été clair. Je m'explique :

    J'ai en entrée un fichier .html construit comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <table cellspacing='0'><tr><th>LeNom</th><th>LaDate</th><th>LePoids</th></tr>
    <tr><td><a href='https://test.com/truc1.xml' target='_blank'>fichier1.xml</a><td>18 April 2019 10:00:00</td><td>1 KB</td></tr>
    <tr><td><a href='https://test.com/truc2.xml' target='_blank'>fichier2.xml</a><td>18 April 2019 10:00:00</td><td>1 KB</td></tr>
    <tr><td><a href='https://test.com/truc3.xml' target='_blank'>fichier3.xml</a><td>11 April 2019 10:00:00</td><td>1 KB</td></tr>
    Disons que je lance mon script et que nous sommes aujourd'hui le 18 avril, je voudrais donc en sortie ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    https://test.com/truc1.xml
    https://test.com/truc2.xml
    En gros, je voudrais parcourir ma page html et prélever uniquement les lien url qui sont à la date du jour.
    Voila

  8. #8
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    ok au temps pour moi, j'avais pas fais gaffe à la date dans la suite de la ligne

    alors on peut imaginer un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -sk https://test.com/ | grep -Po "href=.\Khttps://test.com.+?xml(?=.+18 April 2019)"
    quant à prendre la date du jour, telle qu'elle semble être spécifiée dans l'exemple que tu donnes, on peut touiller ça avec LANG=C date +"%d %A %Y", ce qui à l'arrivée pourrait donner quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl -sk https://test.com/ | grep -Po "href=.\Khttps://test.com.+?xml(?=.+$(LANG=C date +'%d %A %Y'))"

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup ! Ça marche nickel !

    Juste dernière question si je peux me permettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Po "href=.\Khttps://www.test.com.+?xml(?=.+09 April 2019)"`
    Pour prévoir le coup, si demain mes fichiers ne sont plus des .xml, mais des .pdf ou .xlsx etc (en gros n'importe quel format) ... je remplace le "+?xml" par quoi ?

  10. #10
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Les fichiers xml et html sont des fichiers texte plats.
    Les pdf et xlsx ne sont pas des fichiers texte.
    En général, pas de solution. Si ce n'est, un copier/coller à la main.
    Les URLs peuvent apparaître par chance dans le fichier, mais bon.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  11. #11
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par Climux Voir le message
    Pour prévoir le coup, si demain mes fichiers ne sont plus des .xml, mais des .pdf ou .xlsx etc (en gros n'importe quel format) ... je remplace le "+?xml" par quoi ?
    par l'extension des nouveaux fichiers

    s'il peut y avoir 3 extensions différentes par exemple ça pourrait donner .+?(xml|pdf|xlsx)

    au delà du bash, ce qu'on utilise ici ce sont des expression rationnelles (regular expressions)

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup du coup de main ! Je mets le sujet en résolu .

  13. #13
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 378
    Points
    19 378
    Par défaut
    mouais. grep, c'est pas un "script bash".
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Re-Bonjour à tous,

    Je me permets de déterrer cet ancien sujet pour une petite question.

    Aujourd'hui j'utilise cette solution pour récupérer mes fichiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Po "href=.\Khttps://www.test.com.+?(pdf|xlsx|pptx)(?=.+$(LANG=C date +'%d %B %Y'))"`
    Et cela fonctionne, sauf pour un cas
    En effet, si mon lien comporte des espaces, impossible de récupérer mon fichier, exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <tr><td><a href='https://test.com/truc1.xml' target='_blank'>fichier1.xml</a><td>18 April 2019 10:00:00</td><td>1 KB</td></tr>
    <tr><td><a href='https://test.com/truc1 version 2.pdf' target='_blank'>truc1 version 2.pdf</a><td>19 April 2019 10:00:00</td><td>1 KB</td></tr>
    Dans ce cas là, si ma page html est de ce type, mon script récupérera le fichier "truc1.xml" mais pas le fichier "truc1 version 2.pdf" ...
    Une idée pour me débloquer ?

    Climux

  15. #15
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    Désolé de jouer encore le rabat-joie, mais une URL ne peut pas contenir d'espaces.

    Suivant !
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  16. #16
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    salut,

    Citation Envoyé par Climux Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Po "href=.\Khttps://www.test.com.+?(pdf|xlsx|pptx)(?=.+$(LANG=C date +'%d %B %Y'))"`
    (...) exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <tr><td><a href='https://test.com/truc1.xml' target='_blank'>fichier1.xml</a><td>18 April 2019 10:00:00</td><td>1 KB</td></tr>
    <tr><td><a href='https://test.com/truc1 version 2.xml' target='_blank'>fichier1.xml</a><td>19 April 2019 10:00:00</td><td>1 KB</td></tr>
    pour le moins il y a un problème entre ta regex et les données d'exemple, en l'état c'est normal que rien ne match

  17. #17
    Futur Membre du Club
    Homme Profil pro
    Analyse système
    Inscrit en
    Avril 2019
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Analyse système

    Informations forums :
    Inscription : Avril 2019
    Messages : 13
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Désolé de jouer encore le rabat-joie, mais une URL ne peut pas contenir d'espaces.

    Suivant !
    Et pourtant ... Je te confirme que j'en reçois bien, et je dois les traiter.

    Citation Envoyé par BufferBob Voir le message
    salut,



    pour le moins il y a un problème entre ta regex et les données d'exemple, en l'état c'est normal que rien ne match
    Ah ? Ca marche de mon côté Où vois-tu une erreur ?

  18. #18
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 277
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 277
    Points : 12 722
    Points
    12 722
    Par défaut
    C'est peut-être aussi parce qu'on est plus en avril mais en août... et que c'est pas https://www.test.com mais https://test.com.
    Cordialement.

  19. #19
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 243
    Points : 13 458
    Points
    13 458
    Par défaut
    j'en reçois bien,
    Que signifie cette phrase ? Quel est le contexte ? D'où vient ce fichier ? Xml ? Qui l'a écrit ? Le but est-il de l'intégrer à une page html ?


    Une URL n'accepte pas toute sorte de caractère.
    Pour "intégrer" des caractères exotiques, on écrit généralement un "%" suivi du code hexadécimal de son code "ascii".
    En l'occurrence, une espace a pour code 3210, soit 2016.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    https://test.com/truc1%20version%202.xml
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  20. #20
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    Citation Envoyé par Climux Voir le message
    Ah ? Ca marche de mon côté Où vois-tu une erreur ?
    là où j'ai mis des couleurs dans mon précédent post

    disedorgue t'a en partie répondu, la regex cherche à matcher le fqdn www.test.com alors que les données contiennent seulement test.com et la date sur chaque enregistrement est une subtilité à prendre en compte également
    mais surtout ce n'est pas avec la regex (pdf|xlsx|pptx) que tu vas pouvoir matcher un nom de fichier avec l'extention xml

Discussions similaires

  1. Réponses: 26
    Dernier message: 15/06/2009, 17h02
  2. lancer script a partir d une page html
    Par nita2006 dans le forum Débuter
    Réponses: 7
    Dernier message: 20/06/2008, 23h09
  3. Appel d'un script js à partir d'une page html
    Par developppez dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 04/06/2008, 20h59
  4. Appeller un script shell dans une page html
    Par Scurz dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 04/05/2007, 14h50
  5. Exécuter un script perl sur une page HTML
    Par natie_49 dans le forum Web
    Réponses: 13
    Dernier message: 05/03/2007, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo