Jsoupライブラリを使用してURLを読み取っています。このURLのテキストは、いくつかの<script>
タグ内にあります。各<script>
タグ内のテキストを取得することは可能ですか? JSoupがそれを許可していないことをすでに知っているので、私はJavascriptファイルを解析するよう求めていないことに注意してください。 URLの実際のソースコードには、scriptタグ内にテキストが含まれています。
doc = Jsoup.connect("http://www.example.com").timeout(10000).get();
Element div = doc.select("script").first();
for (Element element : div.children()) {
System.out.println(element.toString());
}
これは、ソースコードからのスクリプトタグの1つです。
<script type="text/javascript">
(function() {
...
})();
</script>
はい。 Element#getElementsByTag() を使用して、すべてのscript
タグを取得できます。各スクリプトタグは DataNode で表されます。
Document doc =Jsoup.connect("http://stackoverflow.com/questions/16780517/Java-obtain-text-within-script-tag-using-jsoup").timeout(10000).get();
Elements scriptElements = doc.getElementsByTag("script");
for (Element element :scriptElements ){
for (DataNode node : element.dataNodes()) {
System.out.println(node.getWholeData());
}
System.out.println("-------------------");
}
または、要素の内部HTMLを返す Element#html()
メソッドを使用することもできます。
1.11.1以降:効率的な Element#selectFirst()
メソッドを使用して、スクリプト要素
ドキュメントdoc = Jsoup.connect( "http://www.example.com").timeout(10000).get(); Element scriptElement = doc.selectFirst( "script") ; //確認することを忘れないでください scriptElement is not null ... String jsCode = scriptElement。html();
Jsoup 1.10.3まで:結合 Element#select()
および- Elements#first()
スクリプト要素を見つけるための呼び出し。
ドキュメントdoc = Jsoup.connect( "http://www.example.com").timeout(10000).get(); Element scriptElement = doc.select( "script") .first(); //チェックすることを忘れないでください scriptElement is not null ... String jsCode = scriptElement。html();
Document doc = Jsoup.parse(html);
Elements scripts = doc.getElementsByTag("script");
for (Element script : scripts) {
System.out.println(script.data());
}
あなたのケースによると、解決策は以下のようになります。
Document doc = Jsoup.connect("http://www.example.com").timeout(10000).get();
Elements scripts = doc.select("script");
for (Element script : scripts) {
String type = script.attr("type");
if (type.contentEquals("text/javascript")) {
String scriptData = script.data(); // your text from the script
break
}
}