2013-04-29 253 views
1
libxml_use_internal_errors(true); 
$url = 'http://thepiratebay.is/browse/200/0/7'; 
$html = file_get_contents($url); 
$dom = new \DOMDocument(); 
$dom->loadHTML($html); 
$x = new \DOMXPath($dom); 
$nodeList = $x->query('/html/body/div[2]/div[2]/table/tbody/tr'); 
foreach ($nodeList as $node) { 
    die(var_dump($node)); 
} 

給我的錯誤:無法獲取XPath來獲取一個節點列表

"Invalid argument supplied for foreach()" 

不知道爲什麼XPath不上該領域工作?

+1

你有'var_dump'ed的'$ html'內容只是爲了確保您的XPath查詢對應的結構你在提取什麼? – Havelock 2013-04-29 14:01:56

+1

我無法在頁面的任何位置找到「tbody」... – Havelock 2013-04-29 14:04:35

+1

@Havelock +1。如果錯誤是因爲沒有看到解析的內容,那麼將所討論的內容也作爲問題的一部分粘貼是非常有用的(至少是相關部分,以防萬一它是一個巨大的數據,或者也許在一些在線的HTML pastebin) – raidenace 2013-04-29 14:05:43

回答

1

如果我是對的,你想獲得該表中的所有標題。我建議一個更簡單的,更具體的XPath查詢,即

$nodeList = $x->query('//div[@class="detName"]'); 

See it in action

+0

我用firebug的'copy xpath'來獲取xpath。你有沒有機會知道爲什麼這不起作用?我現在要去學習xpath以手動編寫它:p – Tjorriemorrie 2013-04-30 07:13:30

+0

@Tjorriemorrie,說實話,我不能告訴你爲什麼Firebug沒有正確的編寫它。但在我看來,在使用工具來幫助你時,沒有什麼能夠知道事情的背景。 – Havelock 2013-05-01 07:46:52