PHP cURL n'affiche pas toutes les balises DOM lors de l'examen de la collection
P粉677684876
P粉677684876 2023-09-12 20:03:06
0
1
617

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粉677684876
P粉677684876

répondre à tous(1)
P粉124070451

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal