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加工
}