无法获取XPath来获取一个节点列表
问题描述:
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不上该领域工作?
答
如果我是对的,你想获得该表中的所有标题。我建议一个更简单的,更具体的XPath查询,即
$nodeList = $x->query('//div[@class="detName"]');
+0
我用firebug的'copy xpath'来获取xpath。你有没有机会知道为什么这不起作用?我现在要去学习xpath以手动编写它:p – Tjorriemorrie 2013-04-30 07:13:30
+0
@Tjorriemorrie,说实话,我不能告诉你为什么Firebug没有正确的编写它。但在我看来,在使用工具来帮助你时,没有什么能够知道事情的背景。 – Havelock 2013-05-01 07:46:52
你有'var_dump'ed的'$ html'内容只是为了确保您的XPath查询对应的结构你在提取什么? – Havelock 2013-04-29 14:01:56
我无法在页面的任何位置找到“tbody”... – Havelock 2013-04-29 14:04:35
@Havelock +1。如果错误是因为没有看到解析的内容,那么将所讨论的内容也作为问题的一部分粘贴是非常有用的(至少是相关部分,以防万一它是一个巨大的数据,或者也许在一些在线的HTML pastebin) – raidenace 2013-04-29 14:05:43