我有以下HTML代码,我正在电影网站上阅读:
<div class="blue">
Director <a href="http://...">Bobby Farrelly</a>, <a href="http://...">Peter Farrelly</a>. With <a href="http://...>Jim Carrey</a>, <a href="http://...">Jeff Daniels</a>.
<div class="red">
page 1
</div>
</div>
我正试图将导演与演员分开使用XPath。你可能会看到
导演是: Bobby Farrelly和Peter Farrelly
演员是: Jim Carrey和Jeff Daniels
将导演与演员区分开来的唯一方法是检测字符串“。使用”并选择A标签。
使用:
foreach($r as $result) {
$tag = $result->getElementsByTagName("a");
foreach($tag as $text) {
$t = trim(preg_replace("/[\r\n]+/", " ", $text->nodeValue));
}
}
我可以在A标签内选择DIV和文本。但是这将选择所有A标签,只获得导演我只需要选择A标签内的文字直到“。With”字符串。
答案 0 :(得分:2)
一个可能的xpath:
//div[@class="blue"]/a[following-sibling::text()[contains(., "With")]]
上面的xpath读取:查找div
属性值等于“蓝色”的所有class
。然后,在每个div
内,在包含文本<a>
的文本节点之前选择所有"With"
标记。
xpath tester中的输出:
'<a href="http://...">Bobby Farrelly</a>'
'<a href="http://...">Peter Farrelly</a>'