タイトルにあるページの解析を行います。解析する内容は、表示されている武器の一覧を作るための情報を抜き取るような形です。
ページの解析
HTMLはタグで、ツリー状に出来上がっているので、そこを基準にして解析します。
そして、忘れてはいけないのが「目的」です。今回の目的は、武器の一覧を作成することですので、以下のような項目を取得することを目的にしようと思います。
- 武器の種類(刀、鉄砲、戦車etc...)
- 武器を使うためのエネルギー源
- 現実か、架空のものか( Yes or No)
- その武器に対する説明、逸話など
上のような解析をしたいと思います。
駄菓子菓子!自然言語処理ができるわけでもなし、完全に、独自理論での実装になります。
ステップアッププログラミング!
何はともあれ、いきなりすごいことはできないので一歩ずつ進みます。
千里の道も一歩から、プログラミングの良いところは「理解すれば、すぐできる」というところです。ギターとか、ドラムとかのように毎日の練習は必要ありません。その代わり勉強が必要かもしれないけど(笑)
タグを取得
タグを取得します。実装したコードはこちらになります。Githubですので、ダウンロードも可能です。
public void execute() { System.out.println("*** execute ***"); String url = "https://ja.wikipedia.org/wiki/%E6%AD%A6%E5%99%A8"; Document doc = null; try { doc = Jsoup.connect(url).get(); } catch (IOException e) { e.printStackTrace(); } System.out.println("*** Get Content ***"); Element body = doc.body(); Elements eles = body.getElementsByTag("h2"); System.out.println("size: " + eles.size()); for (int i = 0; i < eles.size(); i++) { Element item = eles.get(i); System.out.print("wholeText(): " + item.wholeText()); System.out.println(" / text(): " + item.text()); } }
前回作成したコードよりもスッキリしています。シンプルに「h2タグ」を取得してそれをコンソールに出力しているだけです。
HTML解析 Lv1: ポイントでデータ取得
上のコードは、h2タグを取得しているだけですが、これを、「〜タグを取って、次は〜」というように、順番に必要なデータを取得していくのも1つの手段だと思います。小難しい「人工知能」など使わなくてもいけます(笑)多分ね。。。
そして、ちょいと考えてみたのが、下のような手順です。
- Wikiをターゲットにして、Wikiページから調べたい情報を取得するために、Wikiページの構成を調べる
- 構造を理解し、必要な情報を欲しい形で取得できるようにプログラム設計を行う
- 実装、テスト、成果物(実行結果)を使用してテキストRPGを作る
こんな感じの実装でいけると思います。
ダメだったら、また別な方法を考えます(笑)
そんなもんでしょう(笑)
関連ページ
Java Basic
- Java Basic Level 1 〜Hello Java〜
- Java Basic Level2 〜Arithmetic Calculate〜
- Java Basic Level3 〜About String class〜
- Java Basic Level 4〜Boolean〜
- Java Basic Level 5〜If Statement〜
- Java Basic Summary from Level1 to 5
- Java Basic Level 6 〜Traning of If statement〜
- Java Basic Level8 〜How to use for statement〜
- Java Basic Level 8.5 〜Array〜
- Java Basic Level 9〜Training of for statement〜
- Java Basic Level 10 〜While statement 〜
- Java Basic Swing〜オブジェクト指向〜
- Java Basic Swing Level 2〜オブジェクト指向2〜
- サンプル実装〜コンソールゲーム〜
- Java Basic インターフェース・抽象クラスの作り方
- Java Basic クラスとは〜Step2_1〜
- Java Basic JUnit 〜テストスイートの作り方〜