2017年1月25日水曜日

[品詞解析サーバーへの道] #04 ロシア語サイトのソース取出しと加工

1.ロシアサイトのhtmlソース(単語)抜出し


Eclipse neonから、JavaのgetInputStream()機能でロシア語検索サイトの情報をまるまる取ろうとしたら、コンソールで文字化けしてしまいます。


なんでだろうと思い、以下のようにUTF-8に変えるもだめした。

 eclipse.ini に -Dfile.encoding=utf-8 を追加
 Run Configuration > Common > Encoding で UTF-8 を選択

っていうか、そもそも日本語googleもwebコンテンツ取り込みで文字化けしてた。

ためしにソースに日本語、キリル語をprintしてみると、






これ、コンソールの問題でなく、相手WEB側のヘッダに問題があるようです。

以下をソースに追加すると、

        URLConnection con = url.openConnection();
        con.connect();
        System.out.println(con.getContentType());


こんな結果が。

 ○  yahoo.co.jp --> text/html; charset=Shift_JIS
 ○  baidu.com --> text/html;charset=UTF-8  ○
 ○ pogoda.mail.ru/prognoz/tokyo/ --> 結果なし
 ○  yandex.ru --> UTF-8
 ×  google.ru --> text/html; charset=windows-1251

上記は、別の方法でUTF-8としてリクエストする方法がわかったのでOKとします。


2.単語の取出しとHTML追加


続いて、regular expression で htmlタグを取り除く。ワンライナーな技術はないので、原始作法ですみません(泣

                String str1 = oneLine.replaceAll("<script.+?/script>",""); //script delete
                String str2 = str1.replaceAll("<style>.+?</style>", "");
                String str3 = str2.replaceAll("<div class=>.+?</div>", "");              
                String str4 = str3.replaceAll("<.+?>", " "); //tag delete
                String str5 = str4.replaceAll("&.+?;", " "); //%--; delete
                String str6 = str5.replaceAll("—&.+?;", " "); // -&--; delete            
                String str7 = str6.replaceAll("  *", " "); // continual space delete


これで、お尻の部分をのぞいて、きれいさっぱり消えました
とりのぞいた結果が以下。



3.DB問い合わせとhtmlを再加工

2.で、replaceAllで、カンマ区分でデータを加工できたので、続いて一つずつ配列に単語を投入して、DB問い合わせをして、単語の前後に学習用htmlタグを付加します。
 最初はWebSphere経由ではなく、直接JDBCでつなげてトライしてみます。

              String[] words = str8.split(",", -1);
                for (int ii = 0 ; ii < words.length ; ii++){
                    ここでDB問い合わせとHTML加工              
                }





0 件のコメント:

コメントを投稿