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

XPath如何选择包含特殊字符的元素 排除指定元素失效怎么解决

问题根源

你的XPath筛选失效的核心原因是:HTML/XML解析器会自动将🥇这类字符实体解码为对应的Unicode emoji(🥇/🥈/🥉),你在XPath中传入实体编码字符串,和DOM节点内实际存储的文本内容不匹配,因此筛选规则不生效。

解决方法

根据你的运行场景选择对应方案即可:

场景1:基于已解析的DOM节点做筛选(绝大多数常规场景,比如浏览器控制台、Python lxml、Java Jsoup等)

直接匹配解码后的emoji字符即可,要排除3个奖牌td的写法如下:

td[not(contains(., '🥇') or contains(., '🥈') or contains(., '🥉'))]

如果仅需要排除银牌对应的td,删掉另外两个or判断即可。
如果你的开发环境不方便直接输入emoji字符,也可以用XPath内置的codepoints-to-string函数按Unicode编码匹配:

td[not(
    contains(., codepoints-to-string(0x1F947)) 
    or contains(., codepoints-to-string(0x1F948)) 
    or contains(., codepoints-to-string(0x1F949))
)]

场景2:直接对未解析的原始HTML源码做匹配(少数爬虫/文本处理场景)

你原写法的问题是多做了一次&的转义,你写的🥈对应匹配的是源码中双重转义的内容,和实际源码里的🥈不匹配,修改为如下写法即可:

td[not(contains(., '🥇') or contains(., '🥈') or contains(., '🥉'))]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:45:02