简单的XPath谓词不起作用

时间:2015-12-14 11:57:48

标签: php xpath web-scraping

我正在运行以下PHP代码段,该代码段再次评估HTML页面源的XPath查询。查询似乎是正确的,我用一些在线XPath测试人员测试了它,但我不会得到任何匹配。

<?php
$details = new DOMDocument();
@$details->loadHTMLFile('http://www.astagiudiziaria.com/beni/lotto_unico_genova_via_della_pigna_6b_-_proc_n_583_14_trib_di_genova/index.html');
$xpath = new DOMXpath($details);
$procedimento = $xpath->query('.//ul[preceding-sibling::h2="Informazioni sulla procedura"]/li[(starts-with(., "R.G.E. N°") or starts-with(., "N°")) and not(starts-with(., "N° IVG"))]');
echo $procedimento->length; // returns 0, expected 1
?>

似乎删除部分and not(starts-with(., "N° IVG"))解决了问题(但我需要这个条款)。

XPath查询可能有什么问题?

1 个答案:

答案 0 :(得分:0)

我忘记检查源是否包含源中的空格。这有效:

.//ul[preceding-sibling::h2="Informazioni sulla procedura"]/li[(starts-with(normalize-space(.), "R.G.E. N°") or starts-with(normalize-space(.), "N°")) and not(starts-with(normalize-space(.), "N° IVG: "))]