2017-01-19 9 views
1

を選択されていないと、ページ上のスクリプトタグのコードJsoupは、私はテキストとページのスクリプトタグを選択しようとしているスクリプトタグ

Document doc=jsoup.parse(somehtml); 
Elements ele=doc.select("script:contains(accountIndex)"); 

が含まれています私はこれを選択することができる午前

<script>(function() {var vm = ko.mapping.fromJS({ 
"accountIndex": 1, 
"accountNumber": "*******", 
"hideMoreDetailsText": "Hide More Details", 
"viewAccountNumberText": "Show Account Number", 
"hideAccountNumberText": "Hide Account Number", 
});window.AccountDetails = vm;})();</script> 

ですスクリプトタグのようなスクリプトタグのCSSロケータのように

Elements ele=doc.select("body > script:nth-child(44)"); 

ページには多くのスクリプトタグがありますので、2番目のアプローチ将来変更される可能性があります。

誰かが

答えて

2

:contains(text)はそのテキスト値を持つ要素を探しセレクタ。スクリプトはテキストを持たず、データを持っています(さもなければ、ブラウザにJSが表示されます)。代わりに:containsData(data)セレクタを使用できます。

例えば:

Elements els = doc.select("script:containsData(accountIndex)"); 

ここexampleです。 Selector documentationには、処理されたすべてのクエリタイプ(厳密なCSSだけではありません)があります。

+0

それは働いている!どうもありがとう!スクリプトにはテキストは含まれていません。なぜなら、それが実際にはうまくいかなかった理由を明確に説明しているデータがあるからです。 – Ravi

+0

1つ以上の質問多くの隠しタグはjsoupによっても解析されますが、ブラウザには表示されません。なぜjsoupはその内容をテキストとして扱い、スクリプトタグの内容をテキストとして扱わないのですか? – Ravi

+0

どのように、たとえば? –

1

jsoupのみCSSセレクタをサポートしており、それらは唯一あなたが基づいて選択することができます私はページ上の他のタグを選択することができる午前最初approach.Becauseの問題がjsoupの含まれているもの教えてくださいことができますCSSのクラスとDOM要素のプロパティではなく、テキストの内容(CSS selector based on element text?)です。あなたはここで説明するように例のXOMとTagSoupのために、解析のために別のフレームワークを使用してHTMLを照会してみてください:https://stackoverflow.com/a/11817487/7433999

それとも、このようなyoucスクリプトタグにCSSクラスを追加することができます。

<script class="class1"> 
// script1 
</script> 
<script class="class2"> 
// script2 
</script> 

その後のことができますjsoup使用してCSSを経由して再びスクリプトタグを選択:

Elements elements = document.select("script.class1"); 
+0

Jsoupは、同じものを介して他の要素を選択できるので、テキストに基づいて選択することができます。 – Ravi

関連する問題