ブラウザは、インターネットのサイトにアクセスして、HTMLや画像等のコンテンツをもらって、表示しています。
ただし、ほとんどの場合、欲しいのは文章だったり、しかも、ページが跨ったりしていると、自分でいちいちアクセスするのは面倒です。
フリーソフト等でも、指定したサイトを回って自動でダウンロードしてくれるWeb巡回ソフトがあったりします。
今回はインターネットのサイトにアクセスして、HTMLを取得してみます。
インターネットのサイトからHTMLを取得するサンプル
「http://www.example.com」のページをUTF-8形式で取得します。
取得したコンテンツ(HTML)は、標準出力してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.List; public class HtmlDownloadTest { public static void main(String[] args) { try { //ダウンロードする対象のURLと文字コード String url = "http://www.example.com"; String charset = "UTF-8"; //HTMLを取得 HtmlDownloadTest downloader = new HtmlDownloadTest(); List<String> contents = downloader.read(url, charset); //取得したHTMLを出力 for(String str : contents) { System.out.println(str); } }catch(Exception e) { e.printStackTrace(); } } public List<String> read(String url,String charset) throws Exception { URLConnection conn = new URL(url).openConnection(); try(InputStream is = conn.getInputStream(); InputStreamReader isr = new InputStreamReader(is,charset); BufferedReader br = new BufferedReader(isr)) { ArrayList<String> lineList = new ArrayList<String>(); String line = null; while((line = br.readLine()) != null) { lineList.add(line); } return lineList; } } } |
実行結果
「http://www.example.com」のページが標準出力されます。
1 2 3 4 5 6 7 | <!doctype html> <html> <head> <title>Example Domain</title> ~~(中略)~~ </body> </html> |
サンプルの解説
URLConnectionを使うことで、サイトからの入力ストリームを取得することができます。
このサンプルで取得したHTMLを、ファイルへ保存することで、HTMLをひたすらダウンロードするアプリケーションを作成することができます♪
でも、このサイトはダウンロードせずブラウザで見てくださいw
取得したHTMLをファイルへ保存するには・・?
基本的なファイルの読み書き方法は、こちらを見てください。