cari

Rumah  >  Soal Jawab  >  teks badan

PHP cURL tidak menunjukkan semua teg DOM semasa menyemak koleksi

Saya ingin melaksanakan beberapa kod untuk mengumpul ulasan daripada DOM halaman tertentu.

Hasil cURL tidak lengkap dan saya tidak tahu mengapa kerana beberapa subteg dalam DOM tidak kelihatan dalam hasilnya.

DOM kelihatan seperti ini dalam pemeriksa:

Saya cuba mengumpul DOM menggunakan coretan kod berikut:

$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);

Apa yang saya lihat dalam bahagian kandungan hasil cURL ialah ini:

<div class="container">
    <global></global>
</div>

Jadi penanda kelihatan kosong, tetapi tidak sepatutnya.

Saya cuba mengekstrak kandungan tag menggunakan kod berikut:

$dom = new DOMDocument();
$dom->validateOnParse = true;
@$dom->loadHTML($curlResult);

$globals = $dom->getElementsByTagName('global');

$xmlPath = new DOMXPath($dom);

$reviews = $xmlPath->query('//global');

Tetapi saya masih tidak melihat sebarang teg dalam teg .

Bolehkah seseorang menjelaskan masalah ini kepada saya? bagaimana untuk menyelesaikan masalah ini?

Terima kasih banyak atas bantuan, usaha dan masa anda. :)

P粉677684876P粉677684876428 hari yang lalu597

membalas semua(1)saya akan balas

  • P粉124070451

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

    Ada kemungkinan besar bahawa apa yang anda perolehi dalam Curl adalah sama seperti yang diperolehi oleh penyemak imbas, tetapi penyemak imbas mula melaksanakan javascript yang mengubah suai DOM.

    Anda tidak boleh melihat dengan Curl kerana Curl tidak dapat melaksanakan Javascript.

    balas
    0
  • Batalbalas