今回は入手した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正規表現の使い方
正規表現を使う
正規表現によるマッチング
パターン内の括弧毎にマッチした部分文字列を取得
登録: コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿