我要做的是获取分配给特定维基百科文章的类别以及指定类别的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元素 - 这是因为缺乏线索如何做到这一点。
如何使这种方法有效?另外,还有另一种获取类别名称的方法吗?链接?
答案 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