2017-01-23 108 views
-1

所以我只是試圖用PHP刮掉一個HTML頁面。我在Google上查看了如何操作,並且我使用了file_get_contents()方法。我寫的代碼一點點,但我已經收到,我想不通的錯誤:PHP刮掉一個html頁面

$page = file_get_contents('http://php.net/supported-versions.php'); 
    $doc = new DOMDocument($page); 
    //print_r($page); 

foreach ($doc->getElementsByTagName('table') as $node) { 
    print_r($node); 
} 

第一,註釋掉的print_r聲明可以打印頁面,但foreach循環應該會得到每個表$節點但它沒有打印任何東西。我究竟做錯了什麼?

+2

我的建議是使用Simple HTML Dom Parser; http://simplehtmldom.sourceforge.net/ – Kaylined

+0

爲什麼你試圖將javascript與javascript混合 –

+0

我在寫一個WordPress插件 – brothman

回答

1

你加載你的DOMDocument錯,你需要或者->loadHTMLFile()或者其他的東西。請參閱documentation here

這是你需要做的。

<?php 
    libxml_use_internal_errors(true); 
    $doc = new DOMDocument(); 
    $doc->loadHTMLFile("http://php.net/supported-versions.php"); 
    foreach($doc->getElementsByTagName('table') as $table){ 
     var_dump($table); 
    } 
?> 

該行libxml_use_internal_errors(true);確保在加載html時沒有引發錯誤。由於navsection標記不被支持,因此例如「正確」 html。