Ich möchte Code implementieren, um Kommentare aus dem DOM einer bestimmten Seite zu sammeln.
Das cURL-Ergebnis ist unvollständig und ich weiß nicht warum, da einige Untertags im DOM im Ergebnis nicht sichtbar sind.
Das DOM sieht im Inspektor so aus:
Ich versuche, das DOM mithilfe des folgenden Codeausschnitts zu sammeln:
$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);
Was ich im Abschnitt mit den cURL-Ergebnisinhalten sehe, ist Folgendes:
<div class="container"> <global></global> </div>
Die Markierung
sieht also leer aus, sollte es aber nicht sein.
Ich versuche, den
-Tag-Inhalt mit dem folgenden Code zu extrahieren:
$dom = new DOMDocument(); $dom->validateOnParse = true; @$dom->loadHTML($curlResult); $globals = $dom->getElementsByTagName('global'); $xmlPath = new DOMXPath($dom); $reviews = $xmlPath->query('//global');
Aber ich sehe immer noch keine Tags in den
-Tags.
Kann mir jemand dieses Problem erklären? Wie kann dieses Problem gelöst werden?
Vielen Dank für Ihre Hilfe, Mühe und Zeit. :)
很有可能你在 Curl 中得到的正是浏览器得到的,但浏览器开始执行修改 DOM 的 javascript。
你看不到 with with Curl,因为 Curl 无法执行 Javascript。