使用 XPATH 获取 HTML 标签的类名

use*_*276 1 html xml xpath

假设我们将这个 span 标签<span class="my-FAV_numberis49"></span>包含在一个复杂的文档中,如下所示:

<div id="box_content">
    <div class="heading">
        Description
    </div>
    Really cool description about something really cool.
    <br>

    <div class="more_detail">

    </div>
    <div class="more_detail">
        <span class="date">Today's Date is</span>June 06 2014
    </div>
    <span class="my-FAV_numberis49"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

如何只保存类的名称span(即“ my-FAV_numberis49”)让我们假设文档的格式不变,但span类名可以更改为“”之类的名称my-FAV_numberis7。有没有办法做到这一点?

我希望我的问题很清楚。谢谢您的帮助。

hel*_*cha 5

此 XPath 表达式将选择ID 为 且类属性包含字符串所有元素。spandivbox_contentmy-FAV_numberis

//div[@id='box_content']/span[contains(@class, 'my-FAV_numberis')]
Run Code Online (Sandbox Code Playgroud)

它将匹配my-FAV_numberis49,my-FAV_numberis7以及任何包含my-FAV_numberis, 包括other-class my-FAV_numberis99和 的字符串this-56-my-FAV_numberisnothere

span如果在此上下文中存在多个匹配的节点集,则将选择一个节点集。您可以避免添加更多限制或位置谓词。

如果span是该上下文中的最后一个 span 子元素,您可以使用:

//div[@id='box_content']/span[last()]
Run Code Online (Sandbox Code Playgroud)

这是基于您提供的示例。如果该span元素并不总是另一个元素的子元素div,有时可能位于另一个元素内部,那么您可以使用后代轴:

//div[@id='box_content']//span[last()]
Run Code Online (Sandbox Code Playgroud)

它将选择任何级别中出现在 , 内的最后一个。 spandiv

编辑:要从元素中提取span名,您可以使用:

//div[@id='box_content']//span[last()]/@class
Run Code Online (Sandbox Code Playgroud)