2014年9月4日木曜日

JAVAでhtmlから必要な情報を抜き出す。

前回はurlからhtmlを入手しました。
今回は入手したhtmlから必要な情報を抜き出していきます。
htmlの情報はタグで囲まれており、
必要な情報は<td>2014年9月2日</td><td>148</td><td>151</td><td>148</td><td>151</td><td>18,000</td><td>151</td>の部分です。
この行を正規表現で抜き出し、それぞれを変数に格納していこうと思います。

ちなみに抜き出す部分はブラウザで言うと下の部分です。


ではコードを見ていきます。



import java.util.regex.Pattern;
import java.util.regex.Matcher;


public class matching3 {
	String name = "";	//企業名
	String day= "";	//日付
	String hajimene= ""; 	//始値
	String takane= "";	//高値
	String yasune= "";	//安値
	String owarine= "";	//終値
	String dekidaka= "";	//出来高

	public void matching(matching3 obj, int ccode){
		getURL4 aa = new getURL4();
		String str1;
		str1 = aa.getURL4(ccode);
		String str2 = "";
		//System.out.println(str1+"¥n");

		String regex = "";		//まずはざっくり抽出

		Pattern p = Pattern.compile(regex);
		Matcher m1 = p.matcher(str1);

		while (m1.find()){	//マッチする限りループ
				String bb = m1.group();
				str2 =str2 + bb;	//文字列の追加
		}
		//System.out.println(str2);
		String regex2 ="([0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日)([0-9|,]+)([0-9|,]+)([0-9|,]+)([0-9|,]+)([0-9|,]+)";
		Pattern p2 = Pattern.compile(regex2 );
		Matcher m2 = p2.matcher(str2);

		if(m2.find()){
			day= m2.group(1);	//日付
			hajimene= m2.group(2); 	//始値
			takane= m2.group(3);	//高値
			yasune= m2.group(4);	//安値
			owarine= m2.group(5);	//終値
			dekidaka= m2.group(6);	//出来高

			//System.out.println("日付"+day+"¥n"+"始値"+hajimene+"¥n"+"高値"+takane+"¥n"+"安値"+yasune+"¥n"+"終値"+owarine+"¥n"+"出来高"+dekidaka +"¥n");
		}
		System.out.println("日付"+day+"¥n");
		System.out.println("始値"+hajimene+"¥n");
		System.out.println("高値"+takane+"¥n");
		System.out.println("安値"+yasune+"¥n");
		System.out.println("終値"+owarine+"¥n");
		System.out.println("出来高"+dekidaka +"¥n");
		String regex3 ="

(.*?)

"; Pattern p3 = Pattern.compile(regex3); Matcher m3 = p3.matcher(str2); if(m3.find()){ name = m3.group(1); } System.out.println(name); obj.day = day; obj.name = name; obj.hajimene = hajimene; obj.takane = takane; obj.yasune = yasune; obj.owarine = owarine; obj.dekidaka = dekidaka; } }

これで必要な情報だけ抜き出せるはずです。
あとは個々で抜き出した情報をcsvファイルにして保存できるようにすればいいでしょうか。
まだまだコードが煩雑すぎると思いますので、ひと通り完成したら書き直さないとなと思います。

参考

システムトレーダーの冒険の書

ParserCallbackでHTMLのタグを解析する

Java正規表現の使い方

正規表現を使う

正規表現によるマッチング

パターン内の括弧毎にマッチした部分文字列を取得


0 件のコメント:

コメントを投稿