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

Bibliothèques et frameworks PHP Discussion :

[DOM] XPATH : récupérer des données depuis un fichier HTML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Juillet 2007
    Messages : 41
    Points : 54
    Points
    54
    Par défaut [DOM] XPATH : récupérer des données depuis un fichier HTML
    Bonjour,

    Je me prends la tête depuis un paquet d'heure avec XPath pour récupérer les informations contenu sur une page HTML.

    J'ai une page HTML contenant une table (page de la FFTA donc pas moyen de la modifier )
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    <table border="1" class="orbe3 full clmt keep-heights no-hover" style="margin-bottom: 1em;">
    	...
    	<tbody>
    		...
    		<tr>
    			<td class="ac" >
    				<img src="..." title="Pré-inscrition non terminée" />
    			</td>
    			<td ></td>
    			<td class="ac" >22</td>
    			<td class="al" style="..." >
    				<a class="open-modal" href="<lien_à_récuperer>" title="Consultation du palmarès d'un archer" rel="dialog" rev="800x400" data-term><n° du licencié></a>
    			</td>
    			<td class="al" style="font-weight: bold;" >
    				<a class="open-modal" href="..." title="Consultation du palmarès d'un archer" rel="dialog" rev="800x400" data-term>...</a>
    			</td>
    			<td class="al" >
    				<span data-term>...</span>
    			</td>
    			<td class="al" >
    				<span data-term>...</span>
    			</td>
    			<td class="ac" >...</td>
    			<td class="ac" >...</td>
    			<td class="ac" >...</td>
    			<td class="ac" style="font-weight: bold;" >...</td>
    			<td class="ar" style="font-weight: bold;" >
    				<a href="..." target="_blank" style="text-decoration: none">
    					<img src="..." alt="Préinscrire" />
    				</a>
    			</td>
    		</tr>
    		...
    	</tbody>
    </table>
    et je voudrais récupérer le <lien_à_récupérer> dans la 4ème balise <td> uniquement pour un n° de licencié donné.

    J'ai réussi à afficher le n° de licencié mais par le <lien_à_récupérer> avec ce 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
    19
    20
    21
    22
    23
    24
    25
    26
    $dom = new DOMDocument();
    @$dom->loadHTML($strFIL_contenu);
     
    $xpath =  new DOMXPath($dom);
    $liste_noms = $xpath->query('//table[@class="orbe3 full clmt keep-heights no-hover"]/tbody/tr');
     
    $nombre_de_noms = $liste_noms->length;
    echo $nombre_de_noms;
     
    for($i = 0; $i < $nombre_de_noms; $i++) {
    $td = $liste_noms->item($i);
    	foreach ($td->childNodes as $value) {
    		if ($value->nodeValue == "<n° du licencié>") {
    			$index = $i;
    			var_dump($value);
    		}
    	}
    }
     
    $strXpath = '//table[@class="orbe3 full clmt keep-heights no-hover"]/tbody/tr['. (intval($index) + 1) .']/td';
     
    $xPath_srch = $xpath->query($strXpath);
    $num_Licence = $xPath_srch->item(3)->nodeValue;
    $url_Palmares = $xPath_srch->item(3)->attributes(0);
     
    echo $num_Licence . " : " . $url_Palmares . "<br>";
    la variable $url_Palmares reste vide...

    Une petite aide ne serait pas de trop , merci d'avance.

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Je trouve les noms des variables sont nommés d'une façon énormément mêlé ! mais, chacun à son goût.

    Pour réussir comme une démonstration, on peut voir les sorties directement comme ça.
    Code php : 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    for($i = 0; $i < $nombre_de_noms; $i++) {
            /* conceptuellement tout très mêlé - difficile à corriger */
            /*
            $td = $liste_noms->item($i);
    	foreach ($td->childNodes as $value) {
    		if ($value->nodeValue == "<n° du licencié>") {
    			$index = $i;
    			var_dump($value);
    		}
    	}
            */
     
            //simplement comme ça (il faut supplémenter par beaucoup de contrôle d'existence)
     
            //Si le DOMNodeList résultant est vide, c'est une erreur - il faut faire un contrôle préalable pour être rigoureux
            $a=$xpath->query('(.//td[a])[1]/a[1]', $liste_noms->item($i))->item(0);
            $num_Licence = $a->nodeValue;
            $url_Palmares = $a->getAttribute('href');
            echo $num_Licence . " : " . $url_Palmares . "<br />";
    }
     
    /* ce bloc est aussi très incorrect quant à sa location et son écriture */
    /*
    $strXpath = '//table[@class="orbe3 full clmt keep-heights no-hover"]/tbody/tr['. (intval($index) + 1) .']/td';
     
    $xPath_srch = $xpath->query($strXpath);
    $num_Licence = $xPath_srch->item(3)->nodeValue;
    $url_Palmares = $xPath_srch->item(3)->attributes(0);
     
    echo $num_Licence . " : " . $url_Palmares . "<br>";
    */

Discussions similaires

  1. Extraction des données depuis un fichier .HTML
    Par goldray dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 02/08/2013, 21h51
  2. [AC-2007] récupérer des données depuis fichier PDF
    Par Phil_Théatre dans le forum Access
    Réponses: 3
    Dernier message: 01/11/2010, 18h07
  3. Récupérer des données depuis un fichier XML
    Par mox20 dans le forum jQuery
    Réponses: 1
    Dernier message: 28/01/2010, 00h40
  4. récupérer des données dans un fichier
    Par pymouse dans le forum Langage
    Réponses: 7
    Dernier message: 19/06/2006, 17h43
  5. Réponses: 2
    Dernier message: 16/01/2006, 19h34

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