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

如何编写CSS选择器筛选含指定href且排除特定文本的a标签

筛选href含"crap"但锚文本不含"facebook"的标签

需求明确

要找的<a>标签得同时满足两个条件:

  • href属性里必须有子串 crap(不区分大小写)
  • 锚文本里绝对不能有 facebook(不区分大小写)

示例HTML代码

<p><strong>xxxxx 520dp:</strong> 
<a class="facebook" href="https://facebook.com/6ZdmW2Cwaq/somecrap1.crap.html">facebook</a> 
– <a href="https://google.com/view/somecrap2.crap">google</a> 
– <a href="https://microsoft.net/file/somecrap3.crap.html">microsoft</a></p>

错误尝试的问题

一开始写的选择器 a[href*=crap i] not(a[text*=facebook i]) 有语法错误:

  • CSS里的否定逻辑得用伪类 :not(),不能直接写 not()
  • BeautifulSoup不支持 text*= 这种文本匹配语法,得用它支持的:contains()

修正后的有效选择器

调整后的选择器结合BeautifulSoup解析就能拿到目标标签:

a[href*=crap i]:not(:contains("facebook"))

针对示例里的相邻结构,也可以用兄弟选择器写法:

a[href*=crap i]~:not(a:contains("facebook"))

最终结果

解析后得到符合要求的标签列表:

[<a href="https://google.com/view/somecrap2.crap">google</a>, <a href="https://microsoft.net/file/somecrap3.crap.html">microsoft</a>]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:34:54