You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用XPath通配符选择带有指定类的元素?

用XPath匹配包含特定类名的img元素

嗨,我来帮你搞定这个问题~你之前写的//img[@class='poly *']没生效,是因为XPath里用=做属性匹配是精确匹配,这里的*会被当成普通字符串的一部分,不是你想要的通配符哦。要实现匹配class里包含poly的img元素,得用XPath的内置函数,下面给你几种实用的方案:

  • 匹配包含poly字符串的class(简单场景)
    如果你的class属性里poly是其中一部分,不管它在什么位置,直接用contains()函数就行:

    //img[contains(@class, 'poly')]
    

    不过要注意,这个写法会误匹配像polyx1或者xpoly这类包含poly字符但不是独立类名的情况,如果你的class是空格分隔的多类名,建议用更严谨的方法。

  • 匹配以poly 开头的class(贴合你的示例场景)
    看你的示例元素class都是poly x1、poly x2这种,也就是poly后面跟空格和其他类名,用starts-with()函数会更精准:

    //img[starts-with(@class, 'poly ')]
    

    这里特意加了个空格,就是为了避免匹配到polyx1这种没有空格分隔的情况,确保只匹配poly作为第一个类名的元素。

  • 匹配作为独立类名的poly(最严谨的多类场景)
    如果以后遇到poly可能在class属性中间或者末尾的情况(比如<img class="x1 poly x2">),想要确保poly是一个独立的类名,可以用这种写法:

    //img[contains(concat(' ', @class, ' '), ' poly ')]
    

    原理是把class属性的前后都加上空格,然后匹配poly(前后都带空格),这样就能精准定位到作为独立类名的poly,不会误匹配其他包含poly的字符串。

  • XPath 2.0+ 用正则匹配(灵活度拉满)
    如果你的运行环境支持XPath 2.0及以上版本,还可以用正则表达式来匹配,用matches()函数:

    //img[matches(@class, '\bpoly\b')]
    

    这里的\b是单词边界,能确保poly是一个独立的单词(也就是独立的类名),非常灵活。

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:10:20