2014-07-07 34 views
0

我知道有類似的問題,但是,試圖研究PHP我遇到了這個錯誤,我想明白爲什麼發生這種情況。使用xpath和php從html頁面檢索數據

<?php 
    $url = 'http://aice.anie.it/quotazione-lme-rame/'; 
    echo "hello!\r\n"; 
    $html = new DOMDocument(); 
    @$html->loadHTML($url); 
    $xpath = new DOMXPath($html); 
    $nodelist = $xpath->query(".//*[@id='table33']/tbody/tr[2]/td[3]/b"); 

    foreach ($nodelist as $n) { 
     echo $n->nodeValue . "\n"; 
    } 
?> 

此打印只是「你好!」。我想打印用xpath提取的值,但最後一個回顯不起任何作用。

+0

在提供的網址與'table33'沒有'id'可以發現.. –

回答

2

你有一些錯誤,在你的代碼:

  1. 您嘗試從URL http://aice.anie.it/quotazione-lme-rame/拿到桌子上,但它實際上是在位於http://www.aiceweb.it/it/frame_rame.asp的iframe,所以直接將iframe網址。

  2. 您使用函數loadHTML(),該函數加載HTML字符串。你需要的是loadHTMLFile功能,這需要一個HTML文檔作爲參數的鏈接(見http://www.php.net/manual/fr/domdocument.loadhtmlfile.php

  3. 你假定有頁面上的TBODY元素,但沒有一個。所以刪除你的查詢過濾器。

工作代碼:

$url = 'http://www.aiceweb.it/it/frame_rame.asp'; 
echo "hello!\r\n"; 
$html = new DOMDocument(); 
@$html->loadHTMLFile($url); 
$xpath = new DOMXPath($html); 
$nodelist = $xpath->query(".//*[@id='table33']/tr[2]/td[3]/b"); 

foreach ($nodelist as $n) { 
    echo $n->nodeValue . "\n"; 
} 
+0

感謝,現在很明顯。我沒有注意到這個網頁技巧。 – bomba