CSSには「文字列」にマッチさせる方法がない。
CSS では、textContent にいい感じにマッチさせる方法がない。
xpath ならできる
xpath ならできるんですよね。「おすすめ」というリンク文字列を持つdiv を選ぶ
//div[class='xxx'][ .//a[ contains(. , 'おすすめ') ] ]
広告ブロッカーの独自CSSなら書ける。
CSSではかけなくても、広告ブロッカーが独自拡張しているCSSなら記述できる。
div.xxx:has( a:contains("おすすめ") )
たとえば、以下のように、Adguard では記述できる。 https://github.com/AdguardTeam/ExtendedCss#extended-css-contains
この他にも各種広告ブロッカが切磋琢磨しているので、x:contains
文法は、広告ブロッカでは記述できることが多い。ublock 系でも同様の記述ができる。
文字列でマッチさせられて、指定テキストを子要素に持つ( :has )が使えるので、広告ブロッカに自分でルールを考えるのがとても楽になっている。
なんて便利なんだ知らなかったので、いつもXpathで工夫してたよ・・・・
追記
拡張CSSは、動作が不安定(もしかしてページロード時だけ?)なので、CSSで書けるならCSSで頑張ったほうが良い気がする。