为什么PHP XPath找不到表元素,即使Firefox显示它们存在?

时间:2009-05-07 20:17:03

标签: php dom xpath

我试图在“网页刮擦”期间拉出一张精确的桌子。 使用cURL将页面拉入$ html,这很好。

使用Firebug将精确的XPATH提供给所需的表。

代码如下:

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

$xpath = new DOMXpath($dom);
$summary = $xpath->evaluate('/html/body/table[5]/tbody/tr/td[3]/table/tbody/tr[8]/td/table');
echo "Summary Length: " . $summary->length;

执行时,$ summary->长度始终为零。它不会拉取该表节点。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

Firefox可能会将“虚拟”tbody元素插入到没有这些元素的表中;这些元素是否存在于原始文件中?

答案 1 :(得分:2)

只需删除“/ tbody”即可。从xpath你得到firefox:

  

.//* [@ ID = '数据'] / tbody的/ TR [1] / TD [2] /跨度

创建:

  

.//* [@ ID = '数据'] / TR [1] / TD [2] /跨度

芦荟