Page 1 sur 2

DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 21:31
par chegmarco
Bonjour.

J'essaie d'utiliser DomDocument mais quand j'essaie de lancer l'exploration, rien ne s'affiche sur la page web et c'est pareil quand je passe par le terminal de ligne de commande de mon serveur web Local Laragon. J'ai même essayé de débuguer en ajoutant

Code : Tout sélectionner

ini_set("display_errors",1); error_reporting(E_ALL);
tout en haut de mon script, pour constater l'erreur mais NADA; rien ne s'affiche comme erreur.

Voici le code complet:

Code : Tout sélectionner

<?php ini_set("display_errors",1); error_reporting(E_ALL); $already_crawled = array(); $crawling = array(); function get_details($url) { $options = array('http'=>array('method'=>"GET")); $context = stream_context_create($options); libxml_set_streams_context($context); libxml_use_internal_errors(true); $doc = new DOMDocument; $doc->loadHTMLFile('<?xml encoding="UTF-8">' . $url); $title = $doc->getElementsByTagName("title"); $title = $title->item(0)->nodeValue; return '{ "Title": "'.str_replace("\n", "", $title).'", "URL": "'.$url.'"},'; } function follow_links($url) { global $already_crawled; global $crawling; $options = array('http'=>array('method'=>"GET", 'headers'=>"User-Agent: howCode/0.1\n")); $context = stream_context_create($options); libxml_set_streams_context($context); libxml_use_internal_errors(true); $doc = new DOMDocument; $doc->loadHTMLFile('<?xml encoding="UTF-8">' . $url); $linklist = $doc->getElementsByTagName("a"); foreach ($linklist as $link) { $l = $link->getAttribute("href"); if (substr($l, 0, 5) != "https" && substr($l, 0, 4) != "http") { $l = parse_url($url)["scheme"]."://".parse_url($url)["host"]."/".$l; } if (!in_array($l, $already_crawled)) { $already_crawled[] = $l; $crawling[] = $l; echo get_details($l)."\n"; } } array_shift($crawling); foreach ($crawling as $site) { follow_links($site); } } follow_links("youtube.com");
Aidez-moi s'il vous plaît à corriger mon Code et réussir à exécuter le crawl. Tout semble correcte de mon côté mais je me demande pourquoi rien ne s'affiche quand je fais http://localhost/test.php ou encore quand je passe par le ligne de commande du terminal du Serveur Web Local Laragon en fait "php test.php", même pas la moindre affichage de l'erreur de ce qui ne va pas.

Merci de m'aider s'il vous plaît.

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 21:40
par or 1
il faut commencer par faire marcher :
$doc = new DOMDocument;
$test = $doc->loadHTMLFile('<?xml encoding="UTF-8">' . $url);
if($test){
echo "cela fonctionne";
}
else{
echo "non";
}

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 22:06
par chegmarco
il faut commencer par faire marcher :
$doc = new DOMDocument;
$test = $doc->loadHTMLFile('<?xml encoding="UTF-8">' . $url);
if($test){
echo "cela fonctionne";
}
else{
echo "non";
}
C'est fait et rien n'a changé. Voici la capture d'écran en image: https://ibb.co/89Q7yth

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 22:10
par or 1
quel est le code de retour http (visible dans la console) ?

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 22:16
par chegmarco
quel est le code de retour http (visible dans la console) ?
Console vierge. Voir la capture ici: https://ibb.co/QntQwbs.
Ou encore via "Réseau=>Réponse:" https://ibb.co/f2fsPhX

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 22:27
par or 1
il faut recharger la page pour obtenir le code de retour.

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 22:32
par or 1
et ainsi:
echo "avant";
follow_links("youtube.com");
echo "apres";
cela donne quoi ?

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 22:37
par chegmarco
et ainsi:
echo "avant";
follow_links("youtube.com");
echo "apres";
cela donne quoi ?
Ça retourne juste avantapres. Voici ce que ça retourne en capture d'écran: https://ibb.co/qFJ82ss

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 22:41
par or 1
et ainsi ?
function follow_links($url) {
$doc = new DOMDocument;
$test = $doc->loadHTMLFile('<?xml encoding="UTF-8">' . $url);
if($test){
echo "cela fonctionne";
}
else{
echo "non";
}
}

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 22:48
par chegmarco
et ainsi ?
function follow_links($url) {
$doc = new DOMDocument;
$test = $doc->loadHTMLFile('<?xml encoding="UTF-8">' . $url);
if($test){
echo "cela fonctionne";
}
else{
echo "non";
}
}

Ça retourne non. Capture: https://ibb.co/4FWH6Bh

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 22:49
par or 1
reste plus qu'à lire la doc et à passer en paramètre ce qui est attendu par loadHTMLFile

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 23:03
par chegmarco
reste plus qu'à lire la doc et à passer en paramètre ce qui est attendu par loadHTMLFile
Mais la Documentation de https://www.php.net/manual/fr/domdocume ... mlfile.php dit que loadHTMLFile prend en paramètre le fichier HTML chargé à partir d'un fichier. L'exemple sur la Doc, c'est:

Code : Tout sélectionner

$doc = new DOMDocument(); $doc->loadHTMLFile("filename.html");
Et c'est pourquoi, je lui ai passé moi en paramètre la variable "$url" qui représente "youtube.com". Sinon, je devrais donc mettre quoi selon vous en lieu et place de youtube.com ???

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 23:05
par or 1
$test = $doc->loadHTMLFile('<?xml encoding="UTF-8">' . $url);
ne passe pas en paramètre youtube.com quand $url vaut youtube.com

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 23:13
par chegmarco
$test = $doc->loadHTMLFile('<?xml encoding="UTF-8">' . $url);
ne passe pas en paramètre youtube.com quand $url vaut youtube.com
Mais le résultat est pareil que quand je fais: $test = $doc->loadHTMLFile($url);

C'est pourquoi je suis ici et surtout pourquoi j'ai posté l'intégralité du code. Si donc loadHTMLFile ne prend pas comme argument youtube.com qui vaut $url, que devrais donc lui passer ???
Parce-que à ce que je sache youtube.com est la page que je cherche à récupérer via DomDocument.

Re: DomDocument ne s'exécute pas dans mon code. Aidez-moi svp

Posté : 11 nov. 2021, 23:19
par or 1
il faut passer une url.
vu que cela affiche non, j'en conclus que youtube.com n'est pas une url, et oui youtube.com n'est pas une url.