我试图从 H&M 加载一个页面(用于学习目的),当我注意到一个 div 的内容没有加载时,但是如果我从浏览器保存页面,则 div 被正确保存。谁能解释我为什么会这样?
我正在寻找的 div(最重要的是 ist 的内容)是:
body> div main> div content> div relatedInformationContainer
(里面有很多内容:div relatedInformation>etc...)
这是我使用的代码:
<?php
$url = "http://www.hm.com/gb/product/05427";
libxml_use_internal_errors(true);
$html = file_get_contents($url);
$dom = new DomDocument();
$dom->loadHTML($html);
$xp = new domxpath($dom);
$contentDivs = $xp->query('//div[@id="content"]')->item(0);
$numContentDivs = $xp->evaluate('count(div)', $contentDivs);
// echo $numContentDivs; // output:3 (correct)
$relatedDiv = $xp->query('//div[@id="content"]/div[2]')->item(0)->getAttribute("id");
echo $relatedDiv; // output:relatedInformationContainer (correct)
$relatedDivContent = $xp->query('//div[@id="content"]/div[2]')->item(0);
$numRelatedDivContent = $xp->evaluate('count(div)', $relatedDivContent);
echo $numRelatedDivContent; // output:0 (incorrect!!! it should output 1)
?>
我使用了更简单的方法,结果相同:
<?php
$url = "http://www.hm.com/gb/product/05427";
$doc = new DOMDocument();
$load = @$doc->loadHTMLFile($url);
echo $doc->saveHTML();
?>
如果有人可以解释为什么会发生这种情况,以及是否有解决方案,我会很感激。谢谢。