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

Scripts/Batch Discussion :

Récupérer les données dans une page HTML.


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 230
    Par défaut Récupérer les données dans une page HTML.
    Bonjour à tous,

    J'essai de scripter un petit utilitaire pour me récupérer les infos qui m'intéresse sur l'intranet de mon entreprise et me les envoyer par mail (nous n'avons pas de newsletter).

    J'utilise Curl pour récupérer la page en question dans une variable. Jusque là, tout fonctionne.

    Je cherche maintenant comment faire pour récupérer les infos comprises entre les balises. Dans l'idée, je souhaiterais filtrer les données et ne récupérer que ce qui m'intéresse. Je n'ai pas récupéré toute la page HTML mais dans l'idée voici comment ce compose la page :

    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...Plein de code HTML qui ne m'intéresse pas...
    <span class="subheading-category">Actualités du service Ressources Humaines</span>
    ...Plein de code HTML qui ne m'intéresse pas... partie2
    <h2 itemprop="name">ARTICLE NUMERO 1</h2>
    ...Plein de code HTML qui ne m'intéresse pas... partie3
    <h2 itemprop="name">ARTICLE NUMERO 2</h2>
    ...Plein de code HTML qui ne m'intéresse pas... partie4

    L'idée que j'avais c'est de faire débuter le script à partir du moment où il détecte la balise <span class="subheading-category">Actualités du service Ressources Humaines</span>, ensuite, je souhaiterais récupérer le titre de cette balise (Actu etc....)
    Dans la continuité, dès qu'il détecte une balise h2, récupérer le titre de l'article, etc... Pour au final me générer une newsletter qui me corresponde...

    Je pensais utiliser les régex mais j'ai énormément de mal avec ça et je ne maîtrise pas assez Powershell pour développer correctement la chose.

    Mes questions...

    Comment faire débuter mon script pour qu'il commence sa routine de récupération de donnée à partir de la détection de la balise ACTU ?
    Comment lui faire détecter les balises "ARTICLE NUMERO" et en récupérer les infos ?

    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 230
    Par défaut
    En utilisant les Régex, j'ai réussi en partie à faire ce que je souhaiterais donc je pense que la piste est bonne.

    Toutefois, je rencontre un problème car dès que la condition du Régex est remplie, le script s'arrête.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 230
    Par défaut
    Voici le début de mon code qui m'enlève tout ce qui se trouve avant "Actualités des Ressources Humaines"...

    Code PowerShell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $PageIntranet = Get-Content "C:\test.html"
    Function ExtractionVariable ($Entree, $Sortie) {
    $Pattern = "$Entree(.*?)$Sortie"
    $Resultat = [regex]::Match($PageIntranet, $Pattern).Groups[1].Value
    return $Resultat
    }
     
    $Test = ExtractionVariable -Entree '<span class="subheading-category">' -Sortie '<div class="pagination">'
     
    Write-Host $Test

    Avec ce morceau de code, je sors la partie de la page qui m'intéresse...

    L'idée maintenant, c'est dans cette partie, d'extraire chaque titre d'article mais je n'arrive pas à le faire. J'ai tenté en faisant un pattern dans ma variable $Test mais je n'ai qu'un titre qui s'extrait et le script s'arrête.

  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Je pense que curl est contre productif. PowerShell a ce dont tu as besoin pour cela, voir : https://docs.microsoft.com/en-us/pow...powershell-7.2

    Pour la recherche dans le code HTML j'utilise un parser DOM qui s'appelle HtmlAgilityPack (HAP), sous forme de librairie.
    Pour t'aider sur ce point il nous la structure complète de ta page HTML
    Avec des regexp ça va te suffire dans un premier temps mais ça paraît assez complexe et ce n'est pas assez "fiable" pour l analyse d'un code HTML.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 230
    Par défaut
    Merci de ta réponse.

    Désolé pour le délai de réponse j'ai du mettre en pause quelques jours, mon développement... famille oblige...

    Effectivement, Curl n'est pas le top. J'avais initialement utilisé "Invoke-WebRequest" mais je rencontrais un soucis de certificat avec l'Intranet. Je ne sais pas pourquoi mais depuis, c'est corrigé.

    Je ne peux pas ajouter de librairie supplémentaire et je suis malheureusement cantonné à utiliser PWS. C'est pour cela que je suis parti sur des REGEX. Je commence à avoir quelque-chose d'abouti mais j'ai l'impression que mon code est une usine à gaz. Je répète sans cesse les mêmes instructions pour chaque partie.

    Je cherchais à améliorer le système.

    C'est difficile d'envoyer la structure de la page Intranet pour des raisons de confidentialités, il faut que j'anonymise toute la page... Ils m'ont mis des liens partout...

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    230
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 230
    Par défaut
    Effectivement, je viens de regarder le parser DOM, c'est exactement ce qu'il me faudrait pour me faire gagner du temps... Je vais voir comment l'exploiter.

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/01/2009, 09h25
  2. Réponses: 3
    Dernier message: 28/12/2005, 15h29
  3. Récupérer des données dans une page HTML
    Par newdelirium dans le forum Langage
    Réponses: 3
    Dernier message: 26/10/2005, 19h18
  4. Réponses: 7
    Dernier message: 14/09/2005, 10h50

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