Maison  >  Questions et réponses  >  le corps du texte

PHP cURL n'affiche pas toutes les balises DOM lors de l'examen de la collection

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. :)

P粉677684876P粉677684876375 Il y a quelques jours546

répondre à tous(1)je répondrai

  • P粉124070451

    P粉1240704512023-09-13 15:04:30

    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.

    répondre
    0
  • Annulerrépondre