今から始めるプログラミング7(ぶれいく)
クラス分割とかすっかり忘れているのですが、その上でコーヒーブレイクしています。すいません怠け者です。
現在地方のライン工として働いているのですが、コーヒーをかなり我慢していました。紅茶も好きなのですが、コーヒーは吐くほどハマってしまうので、お金を使い過ぎてしまいそうだったので、わざと買わないようにしていたのですが、つい先日紅茶味のホットケーキを作ったので今度はコーヒー味のホットケーキを作ろう、と思って、ついにインスタントコーヒーを購入してしまいました。
それはさておき、目標としては、ノベルゲームでも作ろうとおもっていたこの講習?ブログですが、いろいろ思うものはあって、本当に役立つには別のことも絶対必要だな、ということを考えます。
今回は作るつもりはありませんが、WEBアプリケーションやスマフォアプリケーションが全盛の現在、HTMLを扱えないと仕事としてはどうしようもない。
とはいえ素直にそれらのアプリケーションを作るのは、ポリシーが・・・。
ということで、単純にURLからHTMLを取得してくるクラスを作ってみました。
GetHTML1クラス
---------------------------------------------
package sample4;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
/**
* HTMLの取得
* @author matsuiyoshikazu
*
*/
public class GetHTML1 {
/**
* HTMLを取得します
* @param url
* @param flgLineNumber
* @return
*/
public StringBuffer getHTML(String url, boolean flgLineNumber) {
String charset = "UTF-8";
StringBuffer sb = new StringBuffer();
InputStream is = null;
InputStreamReader isr = null;
BufferedReader br = null;
try {
URLConnection conn = new URL(url).openConnection();
is = conn.getInputStream();
isr = new InputStreamReader(is, charset);
br = new BufferedReader(isr);
String line = null;
int lineNumber = 0;
if (flgLineNumber) {
lineNumber = 1;
}
while *1 != null) {
if (flgLineNumber) {
sb.append(lineNumber + ":" + line + "\r\n");
lineNumber++;
} else {
sb.append(line);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
br.close();
} catch (Exception e) {
}
try {
isr.close();
} catch (Exception e) {
}
try {
is.close();
} catch (Exception e) {
}
}
return sb;
}
public static void main(String[] args) {
String url = "http://yo2an.hatenablog.com/entry/2021/03/22/171025\"";
GetHTML1 getHtml1 = new GetHTML1();
StringBuffer sb = getHtml1.getHTML(url, false);
;
System.out.println(sb);
sb = getHtml1.getHTML(url, true);
;
System.out.println(sb);
}
}
---------------------------------------------
参考にしたのは下記のページです。自分のブログなどよりきれいにで凹みました。
Java URLConnectionクラスを使ってサイトからHTMLを取得(ダウンロード)する | javalife
そのままだとエラーになるので、URLをhttpsからhttpに変更してみたりしています。変更してもエラーのページが返っていますね、301・・・リダイレクトされている?このあたりのHTMLのコードについては、ググってみてください。権限がないとかページがないとか、そんな感じのコードがいろいろ出てきます。301の説明はちょっとメンドイので割愛です。
まぁざっくりつくった(パクった)コードだと現在の複雑なページはきちんと取得できないですね、昔再帰的なプログラムとか画像ファイルの処理とかでちょっとしてhtmlのダウンロードプログラムを作ってみたこともあるのですが、ちょっと思い出したぐらいで、つらつらと必要な処理が出てくるので、「ぶれいく」にならなくなってきたので、この辺でやめておきます。
でも、話がそれますが、ブラウザというアプリケーションがどれだけすごいことやってるのかがよくわかりますね。
ちょっとしたメディアプレイヤーだったり、書籍のインデックスたるリンクだったり、何気なく利用させていただいているこのアプリケーションは世の中のエンジニアの方々の努力の結晶なんだなぁ、と感じられます。
初めのプロジェクトでは、WEBアプリケーションを作りませんでしたが、(別のチームでは作っていたようです)半年後に参加した次のプロジェクトでは、WEBアプリケーションを作成しました。
とはいってもこれは日の目をみなかったのですが。
次はその失敗プロジェクトについてと、プログラムについてはフラグについて?記事にしたいと思います。
よろしければジャンクコードなど(来週あたりもう一つ追加しようかなWInPCを入手したら。)
*1:line = br.readLine(