我正在尝试获取外部页面的DOM元素。基于我正在尝试的其他帖子:
$html = htmlentities(file_get_contents('http://www.slate.com'));
$dom = new domDocument;
$dom->loadHTML($html);
echo "<pre>";
var_dump($dom);
echo "</pre>";
(Html entites杀死警告,但其他结果与留下警告相同)。
根据我读过的内容,这应该返回父/子节点中的各种DOM部分。但上面代码的结果不包含DOM节点,只包含一个包含整个页面HTML的巨大“textContent”元素。
提前感谢您对我做错的想法。
答案 0 :(得分:1)
您正在寻找
$dom->documentElement
这将返回
DOMNode
对象。
另外:摆脱htmlentities
,因为这会弄乱你提取的HTML代码。例如:<
将获得<
,loadHTML
不会将其解释为<
。看看:Disable warnings when loading non-well-formed HTML by DomDocument (PHP)
虚拟-转储:
function dump(DOMNode $node)
{
echo $node->nodeName;
if ($node->hasChildNodes())
{
echo '<div style="margin-left:20px; border-left:1px solid black; padding-left: 5px;">';
foreach ($node->childNodes as $childNode)
{
dump($childNode);
}
echo '</div>';
}
}
dump($dom->documentElement);
看起来像:
答案 1 :(得分:0)
您应该考虑使用phpQuery(https://github.com/electrolinux/phpquery)。