PHP cURL 在審查收集時未顯示所有 DOM 標籤
P粉677684876
P粉677684876 2023-09-12 20:03:06
0
1
508

我想實作一些程式碼,從特定頁面 DOM 收集評論。

cURL 結果不完整,我不知道為什麼,因為 DOM 中的某些子標籤在結果中不可見。

DOM 在檢查器中看起來像這樣:

我嘗試使用以下程式碼片段收集 DOM:

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

我在 cURL 結果內容部分看到的是這樣的:

因此 標記看起來是空的,但它不應該是空的。

我嘗試使用以下程式碼提取 標記內容:

$dom = new DOMDocument(); $dom->validateOnParse = true; @$dom->loadHTML($curlResult); $globals = $dom->getElementsByTagName('global'); $xmlPath = new DOMXPath($dom); $reviews = $xmlPath->query('//global');

但我仍然沒有在 標籤中看到任何標籤。

有人可以跟我解釋一下這個問題嗎?如何解決這個問題?

非常感謝您的幫助、努力和時間。 :)

P粉677684876
P粉677684876

全部回覆 (1)
P粉124070451

很有可能你在 Curl 中得到的正是瀏覽器所得到的,但瀏覽器開始執行修改 DOM 的 javascript。

你看不到 with with Curl,因為 Curl 無法執行 Javascript。

    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!