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ファイルでも画像ファイルでも読み取って保存できた、という訳。