【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でストリームを確実にクローズする設計にしましょう。
-
【Java】OpenCVライブラリを使って画像のコントラストを変更する方法
画像の明るさやコントラストの増減は、画像のピクセル値を変換することで実現できます。この変換は、次のような数式で表されます。g(i, j) = α ・ f(i, j) + βここで、各要素の意味は以下のとおりです。(i, j):ピクセルの位置(座標)α(ゲイン)と β(バイアス):変換のパラメータ一般に、ゲインパラメータ α が画像のコントラストを制御し、バイアスパラメータ β が画像の明るさを制御します。convertTo() メソッドについてorg.opencv.core.Mat クラスの convertTo() メソッドを使うと、指定した行列に対して必要な計算を実行し、画像のコントラストや
-
【Java入門】Gsonライブラリを使ってJSON文字列をファイルに書き込む方法
GsonライブラリとはGsonは、JavaオブジェクトをJSON形式に変換(シリアライズ)するためのGoogle製オープンソースライブラリです。逆に、JSON文字列からJavaオブジェクトへの変換(デシリアライズ)も簡単に行えるため、JavaでJSONを扱う際の定番ライブラリとして広く利用されています。Gsonを使用する際の中心的なクラスはGsonクラスです。インスタンスはnew Gson()のように直接生成できますが、設定をカスタマイズしたい場合はGsonBuilderクラスを使ってGsonインスタンスを作成することも可能です。この記事では、Gsonクラスが提供するtoJson()メソッドを