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

Web Perl Discussion :

Via une url donnée, en extraire des informations


Sujet :

Web Perl

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Via une url donnée, en extraire des informations
    Bonjour

    J'ai une adresse web: http://www.openbsd.org/

    Sur la page par défaut, il est indiqué "The current release is OpenBSD 4.9", je souhaiterai récupérer la valeur 49 afin de la stocker dans un fichier de log.

    J'avance un peu, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    #!"C:\xampp\perl\bin\perl.exe"
     
    use strict;
    use warnings;
     
    use CGI qw(:standard);
    use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
    use LWP::Simple;
     
    $CGI::POST_MAX=1024*100;
    $CGI::DISABLE_UPLOADS=1;
     
    my $cgi=new CGI;
     
    my $release=get "http://www.openbsd.org/";
     
    print $cgi->header(-charset=>'utf-8');
    print "$release";
    Maintenant, il faut que je trouve l'astuce afin d'isoler le nombre "49"

    Merci d'avance de vos réponses.
    .Olivier

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Points : 712
    Points
    712
    Par défaut
    Regexp est ton ami. C'est pas optimal, et ça ne marchera plus si il y a des changement dans la phrase introductive, mais bon, vu que je ne sais pas à quoi ça peut bien servir...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $release=~/The current release is.*\"(.*)\.html\"/g;
    say($1);

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/perl
    use warnings;
    use strict;
     
    use LWP::Simple;
    use 5.10.0;
    my $web_page = get "http://www.openbsd.org/";
     
    my ($release) = $web_page =~ m{The current release is.*"(.*)\.html"};
    say $release;

  4. #4
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    ça fonctionne, merci beaucoup
    .Olivier

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    505
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Août 2008
    Messages : 505
    Points : 712
    Points
    712
    Par défaut
    Roooo le perfectionniste

  6. #6
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Citation Envoyé par thierry.chich Voir le message
    Roooo le perfectionniste

  7. #7
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Bonjour

    Le code fonctionne, c'est une merveille que voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my ($release) = $web_page =~ m{The current release is.*"(.*)\.html"};
    Il me retourne bien la version du système donc 49 au lieu de 4.9, il manque le caractère "." ?

    Si je comprends bien le regex, il permet d'afficher tout ce qui se trouve après le mot "is" alors comment se fait-il qu'il le enlève le point entre les deux chiffres ?

    Merci d'avance
    .Olivier

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Par ce que le code perl lit la page index.html et dans ce dernier (le code HTML), il y a le texte suivant :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    The current release is <a href="49.html">OpenBSD 4.9</a> which
    La regex lit ce qui se trouve avant le .html et récupère 49

  9. #9
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Je vais reprendre le sujet du problème depuis le début

    Sur la page d'accueil d'OpenBSD, je souhaiterai récupérer la version de la release actuelle qui se présente sous la forme:
    The current release is OpenBSD 4.9
    Lorsque la nouvelle release est sortie, OpenBSD met à disposition un descriptif:
    1. Récupérer le n° de version (49) pour des tests et (4.9) pour de l'affichage
    2. Vérifier que le n° de version (49 page d'accueil) dispose de son descriptif (49.html)

    Si c'est le cas, j'affiche un résultat sinon un autre.

    Merci pour tout
    .Olivier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parcourir une plage de donnée et en extraire des informations
    Par sardaucar dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/10/2014, 18h35
  2. [Mail] Extraire des informations d'une liste
    Par Justin_C dans le forum Langage
    Réponses: 2
    Dernier message: 02/02/2007, 10h00
  3. Lister l'esemble des fichiers présents à une URL donnée
    Par gabest dans le forum Entrée/Sortie
    Réponses: 6
    Dernier message: 17/05/2006, 14h05
  4. Extraire des informations d'une page web
    Par lr dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 28/03/2006, 12h38
  5. [RegEx] Extraire des informations d'une requête SQL
    Par XtofRoland dans le forum Langage
    Réponses: 13
    Dernier message: 07/03/2006, 15h59

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