获取维基百科类别链接

时间:2012-12-05 11:42:11

标签: java jquery wikipedia jodd

我要做的是获取分配给特定维基百科文章的类别以及指定类别的href值。

示例:

  

鉴于this article

     

“面包”& “早餐食品”就是其中之一   名称和“http://en.wikipedia.org/wiki/Category:Breads”&   “http://en.wikipedia.org/wiki/Category:Breakfast_foods”是   categorylinks

我在java中使用Jodd库中的'Jerry'在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包含一个ul,其中li元素代表一个类别,因此迭代list-item-elements以获得类别名称&链接。

为此,我尝试了以下方法:

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

这里的想法是使用JerryFunction对象来获取每个子节点的名称和链接(每个子节点都需要一个JerryFunction作为参数)。 你可能会注意到我在div上调用了children()而不是ul元素 - 这是因为缺乏线索如何做到这一点。

如何使这种方法有效?另外,还有另一种获取类别名称的方法吗?链接?

1 个答案:

答案 0 :(得分: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