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 包含一个 ul,其中的 li 元素代表一个类别,因此迭代 list-item-elements 以获取类别名称和链接似乎更复杂。

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

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

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

我怎样才能使这种方法起作用?另外,还有其他方法可以获取类别名称和链接吗?

4

1 回答 1

1

您可能应该使用 Wikipedia 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 回答