12. HTTPサーバからHTMLを読み出す GetHtml.java

Webサーバからhtmlドキュメントを取得するプログラム。

 

GetHtml.java

//
// GetHtml.java
//
// HTTPサーバからHTMLを読み出す
//
// java GetHtml (URL)
//

import java.net.URL ;
import java.io.DataInputStream ;

public class GetHtml {

public static void main( String[] args ) {

byte[] buffer = new byte[4096] ; // 配列の定義
int n ;
URL url ;

// 引数のチェック
if ( args.length <= 0 ) {
System.err.println( "URLを指定してください!" ) ;
System.exit( 1 ) ;
}

// HTMLを読み出す
try {
url = new URL( args[0] ) ;
DataInputStream htmlStream = new DataInputStream( url.openStream() ) ;

while ( (n = htmlStream.read(buffer)) > 0 ) {
System.out.write( buffer, 0, n ) ;
}

} catch( Exception e ) {
System.err.print( e ) ;
e.printStackTrace() ;
System.exit( 1 ) ;
}
}
}

 

■実行

 $ java GetHtml http://www.yahoo.co.jp/ > yahoo.txt

 

■確認

取得したyahoo.txtをテキストエディタで開くか、catコマンドで確認する。

catコマンドを使うときは、ターミナルの設定を日本語(EUC)にしておくと文字化けせずに確認できる。

$ cat yahoo.txt 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=euc-jp">
<!--京-->
<title>Yahoo! JAPAN</title>
<meta name="description" content="日本最大級のポータルサイト。...

 

 ■確認その2

 Jpeg画像を取得してみる。

 $ java GetHtml http://www.yahoo.co.jp/xxxxxxx.jpg > test.jpg

 同様に、png, gif画像もダウンロードできる。

 

openStream()メソッドは、URLによって参照されるサーバに接続して、ハンドシェイクを実行し、InputStreamを返してくれる。

InputStreamは、URLが参照するファイルの生データを読み取ることができる。

 

ということで、HTMLファイルでも画像ファイルでも読み取って保存できた、という訳。