« 正規表現 バックスラッシュをmacで書く | トップページ | 真鍮リング4 モチーフのテスト »

2012.01.10

javaの正規表現でデータを取得する

HTMLの取得に成功したので、その中から必要な物のみを抽出する。
javaで必要なデータを抽出するには、正規表現というものを用いる。
以下がコード。

import java.io.*;
import java.net.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class WebLoadTest {

    //WebPageURL
    static final String strURL = "http://www.data.jma.go.jp/obd/stats/data/mdrr/tem_rct/alltable/mxtemsad00.html";

    public static void main(String[] args) throws IOException{
        String url = strURL;
        if(args.length != 0) {
            url = args[0];
        }
        URL targetURL;
        targetURL = new URL(url);
        InputStream in0 = targetURL.openStream();

        try {
            /* "JISAutoDetect は 日本語対策 */
            BufferedReader in = new BufferedReader(new InputStreamReader(in0, "JISAutoDetect"));
            String line;

            Pattern p = Pattern.compile("<tr class=.mtx.*nowrap.>(.*)</td>.*nowrap.>(.*)</td>.*white-space:nowrap;.>(.*)\\s[)]</td>.*white-space:nowrap;.>(.*)[)]</td>.*white-space:nowrap;.>([+-].*)</td>.*white-space:nowrap;.>([+-].*)</td>.*center");
            Matcher m;

            while((line = in.readLine()) != null) {
                m = p.matcher(line);

                if(m.find()){//条件に合った行を探し出す。
                    System.out.println(m.group(1) + "_" + m.group(2) + "_" + m.group(3) + "_" + m.group(4) + "_" + m.group(5) + "_" + m.group(6));
                }
            }
        } finally {
            System.out.println("==========FINISH==============");
            in0.close();
        }
    }
}


埼玉県_寄居_8.9_14:47_-0.6_+0.7
埼玉県_熊谷*_9.5_14:13_-0.1_+0.0
埼玉県_久喜_9.4_15:10_+0.1_+0.3
埼玉県_秩父*_9.8_14:04_+0.9_+1.0
埼玉県_鳩山_9.5_14:22_-0.1_+0.2
埼玉県_さいたま_9.6_14:47_+0.2_+0.4
埼玉県_越谷_9.7_14:29_+0.2_+0.3
埼玉県_所沢_9.2_14:52_+0.0_+0.9

以上のように取得することができた。
一つハマったのが、「(℃)」、「起時」の項目それぞれの末尾に“]”の表記があるのだが、
それがいつの間にか“)”に変わっていたこと。何なんだろうこれ。
時間によって変わるものであれば、上記のコードでは駄目だ。
正規表現で特定するには便利なこの“)”、“]”であるが、何の意味を持っているのだろう。

追記

解説 があった。
解説によると、何も無しが「正常値」、“)”が「準正常値」、“]”が「資料不足値」だそうな。
なんにせよ、更新頻度が1時間では、maxでやるにするとこのデータはよろしくないなぁ


|

« 正規表現 バックスラッシュをmacで書く | トップページ | 真鍮リング4 モチーフのテスト »

max msp jitter」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/198455/53700259

この記事へのトラックバック一覧です: javaの正規表現でデータを取得する:

« 正規表現 バックスラッシュをmacで書く | トップページ | 真鍮リング4 モチーフのテスト »