Java HTML解析 〜Wikipedia 武器 ページの解析〜

タイトルにあるページの解析を行います。解析する内容は、表示されている武器の一覧を作るための情報を抜き取るような形です。

ページの解析

HTMLはタグで、ツリー状に出来上がっているので、そこを基準にして解析します。

そして、忘れてはいけないのが「目的」です。今回の目的は、武器の一覧を作成することですので、以下のような項目を取得することを目的にしようと思います。

  1. 武器の種類(刀、鉄砲、戦車etc...)
  2. 武器を使うためのエネルギー源
  3. 現実か、架空のものか( Yes or No)
  4. その武器に対する説明、逸話など

上のような解析をしたいと思います。
駄菓子菓子!自然言語処理ができるわけでもなし、完全に、独自理論での実装になります。

ステップアッププログラミング!

何はともあれ、いきなりすごいことはできないので一歩ずつ進みます。
千里の道も一歩から、プログラミングの良いところは「理解すれば、すぐできる」というところです。ギターとか、ドラムとかのように毎日の練習は必要ありません。その代わり勉強が必要かもしれないけど(笑)

タグを取得

タグを取得します。実装したコードはこちらになります。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つの手段だと思います。小難しい「人工知能」など使わなくてもいけます(笑)多分ね。。。

そして、ちょいと考えてみたのが、下のような手順です。

  1. Wikiをターゲットにして、Wikiページから調べたい情報を取得するために、Wikiページの構成を調べる
  2. 構造を理解し、必要な情報を欲しい形で取得できるようにプログラム設計を行う
  3. 実装、テスト、成果物(実行結果)を使用してテキストRPGを作る

こんな感じの実装でいけると思います。
ダメだったら、また別な方法を考えます(笑)

そんなもんでしょう(笑)

関連ページ

Java Basic

  1. Java Basic Level 1 Hello Java
  2. Java Basic Level2 Arithmetic Calculate
  3. Java Basic Level3 About String class
  4. Java Basic Level 4Boolean
  5. Java Basic Level 5If Statement
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 Traning of If statement
  8. Java Basic Level8 How to use for statement
  9. Java Basic Level 8.5 Array
  10. Java Basic Level 9Training of for statement
  11. Java Basic Level 10 While statement 
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1
  17. Java Basic JUnit 〜テストスイートの作り方〜


投稿者:

takunoji

音響、イベント会場設営業界からIT業界へ転身。現在はJava屋としてサラリーマンをやっている。自称ガテン系プログラマー(笑) Javaプログラミングを布教したい、ラスパイとJavaの相性が良いことに気が付く。 Spring framework, Struts, Seaser, Hibernate, Playframework, JavaEE6, JavaEE7などの現場経験あり。 SQL, VBA, PL/SQL, コマンドプロント, Shellなどもやります。

コメントを残す