我要做的是获取分配给某篇维基百科文章的类别和分配给这些类别的href值。
示例:
给定这篇文章:
"面包"&"早餐食品"属于名称和"http://en.wikipedia.org/wiki/Category:Breads";"http://en.wikipedia.org/wiki/Category:Breakfast_foods"类别链接
我在java中使用Jodd库中的"Jerry"来使用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();
它返回catlinksdiv中的纯文本。由于这个div包含一个ul,其中li元素表示单个类别,因此迭代列表项元素以获得类别名称&链接。
为此,我尝试了以下方法:
doc.$("div#mw-normal-catlinks").children().each(new CategoryFinder());
这里的想法是使用JerryFunction对象来获取每个子级的名称和链接(每个子级都需要一个JerryFunction作为参数)。正如你可能注意到的,我在div上调用children(),而不是ul元素——这是因为不知道如何做到这一点。
如何使这种方法发挥作用?此外,是否还有其他方法可以获得类别名称&链接?
您可能应该使用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