如何获取具有多个css类的html元素

发布于 2024-09-26 15:18:54 字数 316 浏览 6 评论 0原文

我知道如何获取相同 css 类的 DIV 列表,例如

<div class="class1">1</div>
<div class="class1">2</div>

使用 xpath //div[@class='class1']

但是如果一个 div 有多个类,例如

<div class="class1 class2">1</div>

xpath 会是什么样子然后?

I know how to get a list of DIVs of the same css class e.g

<div class="class1">1</div>
<div class="class1">2</div>

using xpath //div[@class='class1']

But how if a div have multiple classes, e.g

<div class="class1 class2">1</div>

What will the xpath like then?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

疑心病 2024-10-03 15:18:54

您正在寻找的表达式是:

//div[contains(@class, 'class1') and contains(@class, 'class2')]

在线有多种 XPath 可视化工具可以极大地帮助测试任何表达式。

The expression you're looking for is:

//div[contains(@class, 'class1') and contains(@class, 'class2')]

There are multiple XPath visualisation tools online that can greatly help test any expression.

奈何桥上唱咆哮 2024-10-03 15:18:54

根据 这个答案,这解释了为什么确保要查找的类名的子字符串不是很重要包括在内,正确答案应该是:

//div[contains(concat(' ', normalize-space(@class), ' '), ' class1 ')
    and contains(concat(' ', normalize-space(@class), ' '), ' class2 ')]

According to this answer, which explains why it is important to make sure substrings of the class name that one is looking for are not included, the correct answer should be:

//div[contains(concat(' ', normalize-space(@class), ' '), ' class1 ')
    and contains(concat(' ', normalize-space(@class), ' '), ' class2 ')]
赠意 2024-10-03 15:18:54

有一个有用的 python 包,称为 cssselect。

从 cssselect 导入 CSSSelector
CSSSelector('div.gallery').path

生成可用的 XPath:

descendant-or-self::div[@class and contains(concat(' ', normalize-space(@class), ' '), ' gallery ')]

它与 Flynn1179 的答案非常相似。

There's a useful python package called cssselect.

from cssselect import CSSSelector
CSSSelector('div.gallery').path

Generates a usable XPath:

descendant-or-self::div[@class and contains(concat(' ', normalize-space(@class), ' '), ' gallery ')]

It's very similar to Flynn1179's answer.

望她远 2024-10-03 15:18:54

我认为你正在寻找的表达是

//div[starts-with(@class, "class1")]/text()

i think this the expression you're looking for is

//div[starts-with(@class, "class1")]/text()

默嘫て 2024-10-03 15:18:54

你还可以这样做:

//div[contains-token(@class, 'class_one') and contains-token(@class, 'class_two')]

You could also do:

//div[contains-token(@class, 'class_one') and contains-token(@class, 'class_two')]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文