1

Javascript を使用してテーブルを作成する Web ページがあります。現在、Java プロジェクトで JSoup を使用して Web ページを解析しています。ところで、JSoup は Javascript を実行できないため、テーブルは生成されず、Web ページのソースは不完全です。JSoup を使用してそのコンテンツを解析するために、そのスクリプトによって作成された HTML コードを含めるにはどうすればよいですか? 簡単な例を教えてください。ありがとうございました!

ウェブページの例:

<!doctype html>
<html>
  <head>
    <title>A blank HTML5 page</title>
    <meta charset="utf-8" />
  </head>
  <body>
    <script>
        var table = document.createElement("table");
        var tr = document.createElement("tr");
        table.appendChild(tr);
        document.body.appendChild(table);
    </script>
    <p>First paragraph</p>
  </body>
</html>

出力は次のようになります。

<!DOCTYPE html>
<html>
    <head>
        <title>
            A blank HTML5 page
        </title>
        <meta charset="utf-8"></meta>
    </head>
    <body>
        <script>
            var table = document.createElement("table");
            var tr = document.createElement("tr");
            table.appendChild(tr);
            document.body.appendChild(table);   
        </script>
        <table>
            <tr></tr>
        </table>
        <p>
            First paragraph
        </p>
    </body>
</html>

ちなみに、JSoup は Javascript を実行できないため、table タグは含まれていません。どうすればこれを達成できますか?

4

1 に答える 1

3

最初の可能性

Jsoup の外にいくつかのオプションがあります。つまり、「実際の」ブラウザを使用して、それと対話します。これに最適な選択肢はselenium webdriverです。セレンを使用すると、さまざまなブラウザーをバックエンドとして使用できます。おそらく、あなたの場合、非常に軽量な htmlUnitが既に使用されているでしょう。より複雑な JavaScript が呼び出された場合、多くの場合、完全なブラウザーを実行する以外に選択肢はありません。幸いなことに、phantomjsはそこにあり、そのフットプリントはそれほど悪くありません (ヘッドレスですべて)。

第二の可能性

もう 1 つの方法は、JSoup で JavaScript ソースを取得し、Java 内で JavaScript インタープリターを開始することです。そのためにRhinoを使用できます。ただし、そのパスに進む場合は、HtmlUnit を直接使用することもできます。これは、おそらく少しかさばりません。

于 2013-10-19T15:43:37.900 に答える