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

Langage PHP Discussion :

Extraction de données d'une page web [RegEx]


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Extraction de données d'une page web
    Je désire extraire des données se trouvant dans un tableau de la page suivante (le résultat du formulaire) http://www.tax.org.uk/OneStopCMS/Core/TemplateHandler.aspx?NRMODE=Published&NRNODEGUID={07AB188B-C789-4AF1-88A9-4B906CA9EA15}&NRORIGINALURL=%2fabout_the_ciot%2ffind-a-cta,
    Voici un exemple de code qui affiche le contenu des cellules du tableau (<td>)
    J'ai essayé ce code mais il m'affiche pas tous les cellules du tableau (contenu des TD)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $content = file_get_contents('TheCharteredInstituteofTaxationAboutUsFindaCTA.html');
     
    //$pattern = "/\<td\>$w\<\/td\>/";
    $pattern = "#<td(.*)>(.+)</td>#";
    preg_match($pattern, $content, $matches); 
    for ($i=0;$i<count($matches);$i++)
    echo($matches[$i]);
    Merci d'avance.

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    Pour parser du HTML c'est DOMDocument

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    64
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 64
    Points : 96
    Points
    96
    Par défaut
    sinon pour ta question, deux choses :

    1- ta regex va prendre le plus long qui soit. ce qui fait pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table>
    <tr>
    <td class="middle">contenu1</td>
    <td>contenu 2</td>
    </tr><tr>
    <td class="title">contenu3</td>
    <td>contenu 4</td>
    </tr>
    </table>
     
    // Ton preg_match va extraire
    Array( 0 => ' class="middle">contenu1</td><td>contenu 2</td></tr><tr><td class="title">contenu3</td><td', 1 => 'contenu 4')
    Pour remédier à cela, voici le pattern

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = "#<td(.*?)>(.+?)</td>#";
    2- preg_match ne renvoi que la première occurence qu'il trouve. Pour avoir tous les contenus, utilise plutôt preg_match_all qui marche de la même manière. (Attention, $matches est alors un tableau de tableaux)

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2011
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Avalion Voir le message
    sinon pour ta question, deux choses :

    1- ta regex va prendre le plus long qui soit. ce qui fait pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <table>
    <tr>
    <td class="middle">contenu1</td>
    <td>contenu 2</td>
    </tr><tr>
    <td class="title">contenu3</td>
    <td>contenu 4</td>
    </tr>
    </table>
     
    // Ton preg_match va extraire
    Array( 0 => ' class="middle">contenu1</td><td>contenu 2</td></tr><tr><td class="title">contenu3</td><td', 1 => 'contenu 4')
    Pour remédier à cela, voici le pattern

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $pattern = "#<td(.*?)>(.+?)</td>#";
    2- preg_match ne renvoi que la première occurence qu'il trouve. Pour avoir tous les contenus, utilise plutôt preg_match_all qui marche de la même manière. (Attention, $matches est alors un tableau de tableaux)
    Merci, c'est résolu.

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

Discussions similaires

  1. Extraction données dans une page WEB
    Par phibrunet dans le forum Excel
    Réponses: 1
    Dernier message: 19/02/2008, 11h26
  2. Extraction de données d'une page web
    Par morgan47 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/03/2007, 01h19
  3. extraction de données d'une page web en exploitant les RSS
    Par rose_des_sables dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 18/02/2007, 11h50
  4. bug dans programme d'extraction de données d'une page web
    Par youpimevla dans le forum Web & réseau
    Réponses: 11
    Dernier message: 31/08/2006, 10h02
  5. [Système] Extraire des données d'une page web
    Par nazoreen dans le forum Langage
    Réponses: 17
    Dernier message: 22/03/2006, 21h38

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