2016-09-14 5 views
-1

のは、私はそのような何かを持っているとしましょう:「BlahBlahBlah私が欲しいいくつかのテキストを取得するために」div要素のコンテンツをCSSセレクタでどのように分割できますか?

私は取得したい
<div class="c1"> 
    BlahBlahBlah Some text that I want to fetch. 
    <br/> 
    <div class="c2">something does not important.</div> 
    <a href="blabla.html">a link text</a> 
</div> 

テキスト。私が "div.c1" CSSセレクタを使うと、 "BlahBlahBlah"というテキストが出てきます。何か重要ではない、リンクテキストです。 "

どのようにして必要なテキストを取得できますか? (注:HTMLコードには間違いがありません。修正を提案しないでください。確かに私が書いたとおりです。テキストを取得したいサイトは私のものではないので、コードを変更できません)

+0

このテキストだけを選択する場合は、スパンで囲む必要があります。 – kinakuta

+0

あなたが '.innerText'をはっきりと扱っているので、実際にそれを行う簡単な方法はありません。最も簡単な方法は、その特定のテキストを別の要素(おそらく '')で囲むことです。テキストが静的な場合は、パーサが最初の期間すべてを解析するようにしてください。 – sircapsalot

+0

これはjQueryでは簡単です。多くのサイトにはすでに読み込まれています。それがオプションの場合は、タグを更新してください。 – isherwood

答えて

1

かんたん回答。できません。 CSSセレクタは、一部のテキストの特定の文字ではなく、ノードを対象としています。擬似セレクタを考えるときには小さな例外がありますが、CSSだけでは望みどおりにすることはできません。

私が持っている最善のアドバイスは、HTMLを修正し、<span>要素でターゲットとするコンテンツをラップし、実際にターゲットにできるCSSクラスを与えることです。

編集

は、ページをフェッチし、あなたは、単にあなたのノードをターゲットにJsoupを使用しているので、(あなたがページを変更することはできませんし、あなたがそれを取得するためにJsoupを使用している見つけるので。)あなたのテキストをつかむもう一つのステップがあります。基本的に、あなたのノードを選択し、内部のテキストをつかんだ後、それの上に正規表現を実行し、最初の期間の前にすべてをつかむ。

あなたの正規表現はJavaで次のようになります

"(.*\\.)"

+0

ありがとう、しかし、私はいくつかのテキストを取得したいサイトは私に属していません。だから、私はコードを変更することはできません。 – umitkilic

+0

あなたが修正できるのはCSSですか?このサイトとはどのように交流していますか? – arjabbar

+0

私はテキストを取り出して、モバイルアプリケーションで表示しています。テキストは毎日変わります。 – umitkilic

0

あなたはトップのためのルールを記述することによって、あなたがCSSルールを適用する目的のために、それを「選択」を意味すると仮定すると、必要なテキストを「フェッチ」することができます子要素の値をオーバーライドします。

.c1 { color: rebeccapurple; } 
.c1 * (color: initial; } 
関連する問題