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] Récupération du contenu d'une class


Sujet :

Bibliothèques et frameworks PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 122
    Par défaut [DOM] Récupération du contenu d'une class
    Bonjour,

    j'ai le code suivant qui doit me permettre de parser, chacune des 10 pages de mon site, en extrayant le contenu des div portant la class "ma_class".

    or il n'affiche rien...

    merci pour votre aide !!


    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
     
     
    for ($page=0; $page<10; $page++) {
     
    	$url="http://monsite.com/?page=".$page;
    // Ce lien est correct
     
    	$doc = new DOMDocument();
    	$doc->loadHTMLFile($url);
     
    	$xpath = new DomXpath($doc);
    	$search = $xpath->query('//div[@class="ma_class"]');
     
    			for ($i=0; $i<$search->length; $i++) {
     
    			$titre = $xpath->query('//div[@class="ma_class"]')->item($i)->nodeValue;
    			echo $titre .";";
    	}
     
    }

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Essaie ça pour voir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    for ($page=0; $page<10; $page++) {
    	$url = "http://monsite.com/?page={$page}";
     
    	$doc = new DOMDocument;
    	$doc->loadHTMLFile($url);
    	$xpath = new DOMXPath($doc);
     
    	$nodes = $xpath->query('//div[@class="ma_class"]');
    	foreach ($nodes as $node) {
    		echo $node->nodeValue;
    	}
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 122
    Par défaut
    Curieux, toujours rien d'affiché.

    Pourtant la variable $url est correcte et "<div class="ma_class"> existe bien dans le document HTML.

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    Bon allez c'est parti pour le débug bien cradingue

    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
    ini_set('display_errors', 1);
    error_reporting(-1);
     
    header('Content-Type: text/plain');
     
    for ($page=0; $page<10; $page++) {
    	$url = "http://monsite.com/?page={$page}";
            var_dump($url);
     
    	$doc = new DOMDocument;
    	$doc->loadHTMLFile($url);
    	var_dump($doc->saveHTML());
     
            $xpath = new DOMXPath($doc);
     
    	$nodes = $xpath->query('//div[@class="ma_class"]');
            var_dump($nodes->length);
    	foreach ($nodes as $node) {
                    var_dump($node);
    		echo $node->nodeValue;
    	}
            var_dump('------- NEXT ---------');
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 122
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    string(44) 
    URL
     
    Warning: DOMDocument::loadHTMLFile() [function.DOMDocument-loadHTMLFile]: Unexpected end tag : div in URL, line: 57 in /home/monURL/index.php on line 44
     
    Warning: DOMDocument::loadHTMLFile() [function.DOMDocument-loadHTMLFile]: error parsing attribute name in URL, line: 111 in /home/monURL/index.php on line 44
    bool(false) int(0) string(22) "------- NEXT ---------"
    voilà le message d'erreur

    il s'agit de ces 2 lignes répétées plein de fois
    (bien sûr à la place de URL et monURL ce sont de vraies URL, hein

  6. #6
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Par défaut
    C'est parce que le flux HTML renvoyé par cette URL est invalide que DOMDocument refuse de le charger.

    Tu peux tenter et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $doc->strictErrorChecking = false;

Discussions similaires

  1. Récupération d'objet d'une class à l'autre
    Par mamatt dans le forum Général Java
    Réponses: 7
    Dernier message: 04/01/2008, 15h12
  2. Réponses: 2
    Dernier message: 30/11/2007, 13h14
  3. [DOM] Récupérer les attributs d'une classe CSS ?
    Par titoumimi dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 10/07/2007, 14h33
  4. recuprer le contenu d'une classe dans une ennumeration
    Par RBOUKACEM dans le forum ASP.NET
    Réponses: 4
    Dernier message: 23/02/2007, 10h28

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