0

私がやろうとしているのは、特定のウィキペディアの記事に割り当てられているカテゴリと、割り当てられたカテゴリへの href の値の両方を取得することです。

例:

この記事を考えると:

「パン」と「朝食用食品」はカテゴリ名で、「http://en.wikipedia.org/wiki/Category:Breads」と「http://en.wikipedia.org/wiki/Category:Breakfast_foods」はカテゴリ名です。カテゴリリンク

Joddライブラリの「Jerry」を使用してJavaでこれを実行し、JavaでJQueryを使用しています。

これまでのところ、次のコードを使用してカテゴリ名を取得しました。

File file = new File(SystemUtil.getTempDir(), "temp");
NetUtil.downloadFile(url, file);
Jerry doc = Jerry.jerry(FileUtil.readString(file));
String category=doc.$("div#mw-normal-catlinks").text();

catlinks div内のプレーンテキストを返します。この div には、li 要素が単一のカテゴリを表す ul が含まれているため、カテゴリ名とリンクを取得するために list-item-elements を反復する方が洗練されているように見えます。

そのために、次のことを試しました。

doc.$("div#mw-normal-catlinks").children().each(new CategoryFinder());

ここでの考え方は、JerryFunctionオブジェクトを使用して、各子の名前とリンクを取得することです (それぞれにパラメーターとして JerryFunction が必要です)。お気づきかもしれませんが、ul 要素ではなく div で children() を呼び出しています。これは、その方法の手がかりがないためです。

このアプローチを機能させるにはどうすればよいですか? また、カテゴリ名とリンクを取得する別の方法はありますか?

4

1 に答える 1

1

おそらくウィキペディア API を使用する必要がありますが、とにかく、Jodd Jerry でこれを行う方法は次のとおりです。

    File file = FileUtil.createTempFile();
    NetUtil.downloadFile("http://en.wikipedia.org/wiki/Toast", file);
    Jerry doc = Jerry.jerry(FileUtil.readString(file));
    Jerry category = doc.$("div#mw-normal-catlinks");
    category.$("ul li").each(
        new JerryFunction() {
            public boolean onNode(Jerry $this, int index) {
                System.out.println($this.text());
                return true;
            }
        });

これは次のように出力されます。

Breads
Breakfast foods
于 2012-12-10T22:57:27.597 に答える