Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 在每个div中只查找第一个类标记的XPath是什么?_Html_Xpath - Fatal编程技术网

Html 在每个div中只查找第一个类标记的XPath是什么?

Html 在每个div中只查找第一个类标记的XPath是什么?,html,xpath,Html,Xpath,我正试图从一个有产品列表的网站上抓取一些文字。获取每个div中第一次出现的类标记的文本的XPath是什么?在下面的代码中,我需要每个div“foo”第一次出现span“bar”文本 所以我需要XPath,它只给出“A年”、“C年”等 我是新手,不知道该怎么做。非常感谢您提供的任何帮助 <div class="foo"> <span class="bar">year A</span> <span

我正试图从一个有产品列表的网站上抓取一些文字。获取每个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.

一年
一些文本
B年
C年
一些文本
D年
等
使用类似于//span[@class='bar'][1]/text()的东西,人们只能得到“A年”

使用类似于/*[contains(@class,'bar')]/text()的内容,可以得到“A年”、“B年”、“C年”和“D年”


我正在抓取多个页面,每个页面上的项目数是不同的。类名“bar”仅用于我需要的元素,因此这里描述的问题:不适用。

这一问题在XPath tester中运行良好:

//div[@class='foo']/span[@class='bar'][1]/text()
或者不带
text()
,如果您真的不需要它:

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

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

很好,对于提供的示例,这似乎很有效。当代码变得更复杂时,公认的答案会提供更高的精度。