Analyse d'un site web, obtenir les liens, analyse les liens avec PHP et XPATH

Je veux analyser l'ensemble d'un site web , j'ai lu plusieurs threads, mais je n'arrive pas à obtenir les données dans un 2ème niveau.

Qui est, je peux renvoyer le lien de la page de démarrage, mais je ne peux pas trouver un moyen d'analyser les liens et d'obtenir le contenu de chaque lien...

Le code que j'utilise est:

<?php

    // SELECT STARTING PAGE
      $url = 'http://mydomain.com/';
      $html= file_get_contents($url);

     //GET ALL THE LINKS OF EACH PAGE

         //create a dom object

            $dom = new DOMDocument();
            @$dom->loadHTML($html);

         //run xpath for the dom

            $xPath = new DOMXPath($dom);


         //get links from starting page

            $elements = $xPath->query("//a/@href");
            foreach ($elements as $e) {
            echo $e->nodeValue. "<br />";
            }

     //Parse each page using the extracted links?

 ?>

Quelqu'un pourrait m'aider pour la dernière partie avec un exemple?

Je serai vraiment beaucoup apprécié!


Bien , merci pour vos réponses!
J'ai essayé quelques trucs mais je n'ai pas managet d'obtenir des résultats encore - je suis nouveau en programmation..

Ci-dessous, vous pouvez trouver 2 de mes tentatives - la 1ère tentative d'analyser les liens et dans la seconde, en essayant de remplacer file_get contenu avec Curl:

 1) 

<?php 
  // GET STARTING PAGE
  $url = 'http://www.capoeira.com.gr/';
  $html= file_get_contents($url);

  //GET ALL THE LINKS FROM STARTING PAGE

  //create a dom object

    $dom = new DOMDocument();
    @$dom->loadHTML($html);


    //run xpath for the dom

    $xPath = new DOMXPath($dom);

        //get specific elements from the sites

        $elements = $xPath->query("//a/@href");
//PARSE EACH LINK

    foreach($elements as $e) {
          $URLS= file_get_contents($e);
          $dom = new DOMDocument();
          @$dom->loadHTML($html);
          $xPath = new DOMXPath($dom);
          $output = $xPath->query("//div[@class='content-entry clearfix']");
         echo $output ->nodeValue;
        }                           
         ?>

Pour le code ci-dessus-je obtenir
Warning: file_get_contents() s'attend à ce paramètre 1 pour être de chaîne, objet donné dans ../example.php sur la ligne 26

2)

    <?php
          $curl = curl_init();
          curl_setopt($curl, CURLOPT_POST, 1);
          curl_setopt($curl, CURLOPT_URL, "http://capoeira.com.gr");
          curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
          $content= curl_exec($curl);
          curl_close($curl);    



          $dom = new DOMDocument();
          @$dom->loadHTML($content);

           $xPath = new DOMXPath($dom);
           $elements = $xPath->query("//a/@href");
            foreach ($elements as $e) {
            echo $e->nodeValue. "<br />";
            }

   ?>

Je n'obtiens aucun résultat. J'ai essayé d'echo $contenu puis-je obtenir :

Vous n'avez pas la permission d'accéder à /sur ce serveur.

En outre, 413 Entité de Demande Trop Grande erreur a été rencontrée lors de la tentative d'utiliser un ErrorDocument pour répondre à la demande...

Des idées svp?? 🙂

vous pouvez envelopper le tout dans une fonction et de faire des appels récursifs pour chaque lien que vous trouverez, mais n'oubliez pas d'enregistrer les pages visitées pour éviter de courir dans les boucles infinies
Afficher le contenu ou la présentation de l'un des liens, pour commencer, et ce que vous avez essayé.
aussi, vous souhaiterez peut-être utiliser curl sur file_get_contents comme deux fois plus rapide également curl multi comme une option pour extraire plusieurs liens à la fois

OriginalL'auteur taz | 2012-04-11