我试图阻止某些结果出现在我的 Google 搜索中,但我很难使用 uBlock Origin 简洁地创建单行块。
例如,我不想要“www”。 imyfone.com”出现在我的搜索结果中,因为他们试图向我出售产品,而我正在寻找一个我可以自己解决的解决方案。
因此,经过几次尝试,我能够将范围缩小到 2 个条目以删除该网站的出现:
*[contains(@href,'www.imyfone.com')][@jsname]/ancestor::div[@jsaction][@jscontroller]/..
和
*[contains(@href,'www.imyfone.com')][@jsname]/ancestor::div[@class='hlcw0c']
尽管取得了进展,但我不知道如何将两者结合起来。问题归结于这两个结果的结构。对于一个结果,如果该结果与我正在搜索的内容逐字相关,则结果会更大,并且相对于其他相关结果具有不同的结构。
我尝试使用以下方法,但它只能得到
<a>link</a>
以获得大结果。
*[contains(@href,'www.imyfone.com')][@jsname][ancestor::div[@jsaction][@jscontroller]/.. or ancestor::div[@class='hlcw0c']]
我尝试过这个,但它太贪婪/包容以至于删除了整个页面。
*[contains(@href,'www.imyfone.com')][@jsname]/ancestor::div[((@class='MjjYud') or (@jsaction and @jscontroller))]/..
我尝试用
and not
缩小最后一个范围,但无论我尝试什么,它都被忽略了。
*[contains(@href,'www.imyfone.com')][@jsname]/ancestor::div[((@class='MjjYud') or (@jsaction and @jscontroller) and not(@id='rso' and @id='rcnt'))]
有人可以帮助我更好地使用 XPATH 吗?谢谢!
我可能遗漏了一些东西,但是你不能简单地将两个表达式与联合运算符('|')组合起来吗?
您还没有告诉我们您正在使用哪个 XPath 版本,我猜它可能是 1.0。
在 XPath 2.0+ 中,您可以在路径的任何步骤中使用并集运算符,因此
*[contains(@href,'www.imyfone.com')][@jsname]/
(ancestor::div[@jsaction][@jscontroller]/.. |
ancestor::div[@class='hlcw0c'])
在 XPath 1.0 中它只能出现在顶层,这更加冗长:
*[contains(@href,'www.imyfone.com')][@jsname]/
ancestor::div[@jsaction][@jscontroller]/.. |
*[contains(@href,'www.imyfone.com')][@jsname]/ancestor::div[@class='hlcw0c']