2015-02-24 33 views
0

我在抓取網站時遇到了一些問題。返回時的HTML非常好。我可以手動將它從站點複製並存儲在一個變量中,並且saveHTML()返回整個HTML。但是,當通過編程直接從站點注入到DOMDocument中時,它由於某種原因刪除了整個<body>標記,使其無法使用,所以我無法用XPath來查詢它。有誰知道爲什麼會發生這種情況?唯一保留的是<head>及其內容。DOMDocument刪除<body>標記及其內容

$dom = new DOMDocument(); 
$dom->loadHTML($html); 

echo htmlentities($dom->saveHTML()); 

是DOM文檔砸了看起來像這樣的HTML:

<!DOCTYPE html> 
<html lang="sv"> 
    <head> 
     <meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=EDGE"> 

     .... 

    </head> 
</html> 
+0

該文件是否有''? :)只是問,因爲我在這裏用HTML文檔嘗試了同一段代碼,結果很好。 – 2015-02-24 20:30:52

+0

@WilliamJanoti當然是的,爲什麼我會被這個問題困擾呢? – silkfire 2015-02-24 20:32:01

+2

請顯示一個可供人們用來重現此問題的最小但完整的PHP代碼示例。另外,說出你正在討論的HTML頁面並鏈接到它。 – 2015-02-24 20:40:55

回答

0

我設法找到罪魁禍首爲什麼DOM文檔嗆得上取出的HTML。它顯然包含兩個NUL(ASCII碼0x00)字符,根據官方的HTML規範禁止。在加載HTML之前替換它們解決了問題。

相關問題