我正在尝试从列表中提取电子邮件文本但没有成功。 特别是我使用了这段代码
//li/div/p//*[contains(., '@')]
但奇怪的是它不起作用!你可以帮帮我吗? 这是代码示例
<li class="bgmp_list-item">
<h3 class="bgmp_list-placemark-title">
<a href="http://www.exemple.com" class=""> Name1 </a>
</h3>
<div class="bgmp_list-description">
<p class="">
<strong class="">Responsible:</strong> John Doe <br>
<strong class="">Site:</strong> <a title="www.exemple.com" href="http://www.exemple.com" onclick="javascript:_gaq.push(['_trackEvent','outbound-article','www.2ld.it']);" target="_blank" class="">www.2ld.it</a>
<br>
<strong class="">Email:</strong> some_email@email.com
<br><strong class="">Address:</strong> <a href="http://www.exemple.com" target="_blank" class="">3, Main Street 00000, London</a> <br>
<strong>Tel:</strong> 00 000000 <strong>Fax:</strong> 0000000
</p>
</div>
答案 0 :(得分:1)
答案 1 :(得分:0)
使用p//*[contains(., '@')]
将谓词应用于<p>
的各个子元素,而没有此类子元素,因为
目标电子邮件地址文本是<p>
的直接子项。这是初始XPath无法工作的原因之一。直接在<p>
上应用谓词应该有效:
//li/div/p[contains(., '@')]
但是会返回<p>
元素。如果您只需要返回包含电子邮件地址的文本节点,那么谓词应该应用于<p>
中的各个文本节点,如另一个答案中所述:
//li/div/p/text()[contains(., '@')]