Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaのURLクラスを使ってWebページを読み込む方法と重要なステップ

java.netパッケージに含まれるURLクラスは、Uniform Resource Locator(URL)を表すクラスです。このクラスを使用することで、World Wide Web上のリソース(ファイル、ディレクトリ、参照など)を指し示すことができます。

URLクラスには複数のコンストラクタが用意されており、そのうちの一つはString型のパラメータを受け取り、URLオブジェクトを生成します。

また、openStream()メソッドを呼び出すと、現在のオブジェクトが表すURLへの接続が開かれ、InputStreamオブジェクトが返されます。このInputStreamを使えば、URLからデータを読み取ることが可能です。

Webページからデータを読み取る手順

URLクラスを使用してWebページからデータを読み込むには、以下の手順に従います。

  • 目的のWebページのURLを引数として渡し、java.net.URLクラスをインスタンス化します。
  • openStream()メソッドを呼び出し、InputStreamオブジェクトを取得します。
  • 取得したInputStreamオブジェクトを引数として渡し、Scannerクラスをインスタンス化します。

サンプルコード

import java.io.IOException;
import java.net.URL;
import java.util.Scanner;
public class ReadingWebPage {
    public static void main(String args[]) throws IOException {
        // URLクラスのインスタンス化
        URL url = new URL("https://www.something.com/");
        // 指定したページの内容を取得
        Scanner sc = new Scanner(url.openStream());
        // 結果を保持するためStringBufferをインスタンス化
        StringBuffer sb = new StringBuffer();
        while(sc.hasNext()) {
            sb.append(sc.next());
            //System.out.println(sc.next());
        }
        // StringBufferオブジェクトから文字列を取得
        String result = sb.toString();
        System.out.println(result);
        // HTMLタグを除去
        result = result.replaceAll("<[^>]*>", "");
        System.out.println("Contents of the web page: "+result);
    }
}

実行結果

<html><body><h1>Itworks!</h1></body></html>
Contents of the web page: Itworks!

このように、URLクラスとopenStream()メソッドを組み合わせることで、わずか数行のコードでWebページの内容を取得できます。取得したHTMLから正規表現を使ってタグを除去すれば、テキストコンテンツだけを抽出することも可能です。なお、実際の開発ではtry-with-resources文を使ってリソースを確実にクローズすることや、例外処理を適切に行うことが推奨されます。

  1. Java 9における@Deprecatedアノテーションの改善点とは?新要素「since」「forRemoval」を徹底解説

    @Deprecatedアノテーションとはクラス、メソッド、フィールドなど、プログラム内のあらゆる要素に付与できる@Deprecatedアノテーションは、「その要素はもはや使用すべきではない」ことを示すためのものです。要素が非推奨とされる主な理由は以下の通りです。使用すると危険であり、エラーを引き起こす可能性がある将来のバージョンで互換性がなくなる可能性がある将来のバージョンで削除される可能性があるより優れた、効率的な代替手段がすでに提供されているJava 9で追加された2つの新しい要素Java 9では、@DeprecatedアノテーションにsinceとforRemovalという2つの新しい属性

  2. JavaにおけるCursorクラスの役割とは?マウスカーソル制御の基本を解説

    JavaのCursorクラスとはCursorクラスは、Objectクラスのサブクラスであり、画面上のポイント(指し示す位置)やインジケーター(表示標識)として定義されます。ユーザーがマウスを使ってシステムへの入力を選択・操作する際に、その位置を視覚的に示す重要な役割を担っています。GUIアプリケーションでは、状況に応じてカーソルの形状を変えることで、ユーザーに対して直感的なフィードバックを提供できます。例えば、処理中であることを伝える砂時計型のカーソルや、クリック可能な要素を示す手型のカーソルなどが代表的な例です。利用可能なカーソルの種類Cursorクラスには、あらかじめ定義されたさまざまなカ