我在抓取网站时遇到了一些问题。返回时的HTML非常好。我可以手动从站点复制它并将其存储在变量中,saveHTML()
返回整个HTML。但是当以编程方式直接从站点注入DOMDocument时,由于某种原因,它会删除整个<body>
标记,使其无效,因此我无法使用XPath
进行查询。有谁知道为什么会这样?它唯一保留的是<head>
和内容。
$dom = new DOMDocument();
$dom->loadHTML($html);
echo htmlentities($dom->saveHTML());
DOMDocument搞砸的HTML看起来像这样:
<!DOCTYPE html>
<html lang="sv">
<head>
<meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=EDGE">
....
</head>
</html>
答案 0 :(得分:0)
我设法找到了为什么DOMDocument在获取的HTML上窒息的罪魁祸首。它显然包含两个NUL
(ASCII代码0x00
)字符,根据官方HTML规范是禁止的。在加载HTML之前替换它们解决了这个问题。