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

【Java入門】外部ライブラリ不要!URLクラスでWebページの内容を読み取る方法

java.netパッケージに含まれるURLクラスは、World Wide Web上のリソース(ファイルやディレクトリ、参照先など)を指し示す「Uniform Resource Locator(URL)」を扱うためのクラスです。Java標準ライブラリだけで構成されているため、追加の依存関係なしに利用できます。

このクラスが持つopenStream()メソッドを呼び出すと、そのオブジェクトが表すURLへの接続が開かれ、ページのデータを読み取るためのInputStreamオブジェクトが返されます。これを利用することで、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("Webページの内容: "+result);
   }
}

実行結果

<html><body><h1>Itworks!</h1></body></html>
Webページの内容: Itworks!

実装時の注意点

  • 空白が除去される点に注意: Scannerのnext()はトークン単位で読み込むため、単語間の空白が失われて「Itworks!」のように連結されます。元の書式を保ちたい場合はnextLine()を使うか、BufferedReaderのreadLine()を組み合わせるのがおすすめです。

  • 文字コードの扱い: 対象ページのエンコーディングがUTF-8以外の場合、文字化けすることがあります。new Scanner(stream, "UTF-8") のように文字セットを明示的に指定すると安全です。

  • 例外処理: ネットワーク接続や不正なURLによってIOExceptionが発生する可能性があるため、try-catch文やtry-with-resourcesでストリームを確実にクローズする設計にしましょう。

  1. 【Java】OpenCVライブラリを使って画像のコントラストを変更する方法

    画像の明るさやコントラストの増減は、画像のピクセル値を変換することで実現できます。この変換は、次のような数式で表されます。g(i, j) = α ・ f(i, j) + βここで、各要素の意味は以下のとおりです。(i, j):ピクセルの位置(座標)α(ゲイン)と β(バイアス):変換のパラメータ一般に、ゲインパラメータ α が画像のコントラストを制御し、バイアスパラメータ β が画像の明るさを制御します。convertTo() メソッドについてorg.opencv.core.Mat クラスの convertTo() メソッドを使うと、指定した行列に対して必要な計算を実行し、画像のコントラストや

  2. 【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法

    GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを