25

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>
4

4 に答える 4

28

Element#html()または、要素の内部 html を返すメソッドを使用することもできます。

1.11.1 以降:効率的なElement#selectFirst()方法を使用してスクリプト要素を見つけます。

ドキュメント doc = Jsoup.connect("http://www.example.com").timeout(10000).get();
要素 scriptElement = doc.selectFirst("script");
// scriptElementが null で
ないことを確認することを忘れないでください...

文字列 jsCode = scriptElement. html() ; 

Jsoup 1.10.3 まで:スクリプト要素を検索するために結合して呼び出しますElement#select()Elements#first()

ドキュメント doc = Jsoup.connect("http://www.example.com").timeout(10000).get();
要素 scriptElement = doc.select("script").first();
// scriptElementが null で
ないことを確認することを忘れないでください...

文字列 jsCode = scriptElement. html() ; 
于 2014-01-01T22:08:30.903 に答える
8
Document doc = Jsoup.parse(html);
Elements scripts = doc.getElementsByTag("script");
for (Element script : scripts) {
    System.out.println(script.data());
}
于 2016-04-25T11:41:46.597 に答える
2

あなたのケースによると、解決策は以下のようになります。

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;
    }
}
于 2019-01-30T08:25:22.757 に答える