Je souhaite implémenter du code pour collecter les commentaires d'une page DOM spécifique.
Le résultat cURL est incomplet et je ne sais pas pourquoi car certaines sous-balises du DOM ne sont pas visibles dans le résultat.
Le DOM ressemble à ceci dans l'inspecteur :
J'essaie de collecter le DOM en utilisant l'extrait de code suivant :
$domain = 'feefo.com'; $page_id = 'firebrand-promotions'; $curli = curl_init(); curl_setopt_array($curli, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_FOLLOWLOCATION => true, CURLOPT_FRESH_CONNECT => true, CURLOPT_URL => 'https://www.' . $domain . '/en-US/reviews/' . $page_id . '?displayFeedbackType=SERVICE&timeFrame=YEAR' CURLOPT_HTTPHEADER => [ 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,* /*;q=0.8,application/signed-exchange;v=b3;q=0.9', 'Accept-Language: en-US;q=0.8,en;q=0.7', 'Cache-control: max-age=0', 'Referer: https://' . $domain, 'sec-fetch-mode: navigate', 'sec-fetch-site: none', 'sec-fetch-dest: document', 'sec-fetch-user: ?1', 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36' ] ]); $curlResult = curl_exec($curli);
Ce que je vois dans la section de contenu des résultats cURL est ceci :
<div class="container"> <global></global> </div>
Donc, le marqueur
semble vide, mais il ne devrait pas l'être.
J'essaye d'extraire le contenu de la balise
en utilisant le code suivant :
$dom = new DOMDocument(); $dom->validateOnParse = true; @$dom->loadHTML($curlResult); $globals = $dom->getElementsByTagName('global'); $xmlPath = new DOMXPath($dom); $reviews = $xmlPath->query('//global');
Mais je ne vois toujours aucune balise dans les balises
.
Quelqu'un peut-il m'expliquer ce problème ? Comment résoudre ce problème?
Merci beaucoup pour votre aide, vos efforts et votre temps. :)
Il est très possible que ce que vous obtenez dans Curl soit exactement ce que le navigateur obtient, mais le navigateur commence à exécuter du javascript qui modifie le DOM.
Vous ne pouvez pas voir avec Curl car Curl ne peut pas exécuter Javascript.