2014年9月13日土曜日

過去データの取得 -htmlの正規表現

前回に引き続き、株価の過去データを取得する続きです。
これまでは1日分のデータだったので、変数に入れて、それを引き出すだけでよかったのですが、
過去何年分のデータを入れるのに変数を使うと大量の変数が必要になります。
そこで、これまで変数を使用していたところを配列にして順次格納していこうと思います。


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

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

	public void matching_manth(matching_manth obj,int ccode, String eyyyymmdd, String syyyymmdd){
		getURL6 aa = new getURL6();
		String str1 = aa.getURL6(ccode, eyyyymmdd, syyyymmdd);
		String str2 = "";
		if(str1.equals("")){
			return;
		}
		String regex ="";
		Pattern p = Pattern.compile(regex);
		Matcher m1 = p.matcher(str1);

		while(m1.find()){
			String bb = m1.group();
			str2 = str2 +bb;
		}
		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);
		int i = 0;
		while(m2.find()){
			day[i]= m2.group(1);	//日付
			hajimene[i]= m2.group(2); 	//始値
			takane[i]= m2.group(3);	//高値
			yasune[i]= m2.group(4);	//安値
			owarine[i]= m2.group(5);	//終値
			dekidaka[i]= m2.group(6);	//出来高
			i =i+1;
		}

		String regex3 ="

(.*?)

"; Pattern p3 = Pattern.compile(regex3); Matcher m3 = p3.matcher(str2); if(m3.find()){ name = m3.group(1); } } }

と、以上になります。
ループを回して、正規表現で見つかる限り日付や、値を配列に格納していきます
これで配列に最初から最後までのデータが入っているので、次回はcsvに順々に吐き出していきます。

0 件のコメント:

コメントを投稿