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?? 🙂
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
Vous devez vous connecter pour publier un commentaire.
Vous pouvez essayer ce qui suit. Voir ce fil pour plus de détails
OriginalL'auteur Team Webgalli
OriginalL'auteur DanFromGermany
Veuillez vérifier le code ci-dessous, j'espère qu'elle vous aide.
Grâce,
Roger
OriginalL'auteur Roger
trouver un lien de site web, de manière récursive avec la profondeur
OriginalL'auteur Akshay bhatt
vous pouvez utiliser le code ci-dessus pour obtenir tous les liens possibles
OriginalL'auteur Thamaraiselvam