什么是XPath才能找到每个div中第一个类标记的出现?

时间:2014-08-04 10:50:07

标签: html xpath

我正在尝试搜索包含产品列表的网站的某些文字。什么是获取每个div中第一次出现的类标记文本的XPath?在下面的代码中,我需要为每个div“foo”首次出现span“bar”的文本。

所以我需要XPath只给我“A年”,“C年”等等。

我是新手,没有任何线索可以做到这一点。非常感谢您提供的任何帮助!

<div class="foo">                       
    <span class="bar">year A</span>
    <span class="qux">some text</span>
    <span class="bar">year B</span>
</div>

<div class="foo">                       
    <span class="bar">year C</span>
    <span class="qux">some text</span>
    <span class="bar">year D</span>
</div>

Etc.

使用// span [@ class ='bar'] [1] / text()之类的东西,只能获得“A年级”。

使用// * [contains(@class,'bar')] / text()之类的东西,可以得到“A年”,“B年”,“C年”和“D年”。

我正在抓取多个页面,每个页面上的项目数量也不同。类名“bar”仅用于我需要的元素,因此此处描述的问题:What is the XPath expression to find only the first occurrence?不适用。

2 个答案:

答案 0 :(得分:0)

这个在XPath测试器中运行良好:

//div[@class='foo']/span[@class='bar'][1]/text()

或没有text()如果你真的不需要它:

//div[@class='foo']/span[@class='bar'][1]

答案 1 :(得分:0)

使用//div[@class = 'foo']/span[@class = 'bar'][1],您可以选择属性spanclass的每个第一个孩子bar。如果父级的类或名称无关紧要,请使用//*/span[@class = 'bar'][1]