12. HTTPサーバからHTMLを読み出す GetHtml.java
- 2006.08.18
 - 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ファイルでも画像ファイルでも読み取って保存できた、という訳。
- 
            前の記事
			  		    	        
	        お役立ちリンク集 | Solaris 2006.08.17
 - 
            次の記事
			  		    	        
	        トラブル | ハードディスクがヤバイかも 2006.08.20