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