Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取维基百科分类链接_Java_Jquery_Wikipedia_Jodd - Fatal编程技术网

Java 获取维基百科分类链接

Java 获取维基百科分类链接,java,jquery,wikipedia,jodd,Java,Jquery,Wikipedia,Jodd,我要做的是获取分配给某个维基百科文章的类别和分配给这些类别的href值 例如: 鉴于: “面包”和“早餐食品”属于这一类 姓名和“http://en.wikipedia.org/wiki/Category:Breads" & "http://en.wikipedia.org/wiki/Category:Breakfast_foods”“是吗 类别链接 我在java中使用Jodd库中的“Jerry”来使用java中的JQuery 到目前为止,我使用了以下代码来获取类别名称: File file =

我要做的是获取分配给某个维基百科文章的类别和分配给这些类别的href值

例如:

鉴于:

“面包”和“早餐食品”属于这一类 姓名和“http://en.wikipedia.org/wiki/Category:Breads" & "http://en.wikipedia.org/wiki/Category:Breakfast_foods”“是吗 类别链接

我在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元素表示单个类别,因此迭代列表项元素以获得类别名称和链接似乎更复杂

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

doc.$("div#mw-normal-catlinks").children().each(new CategoryFinder());
这里的想法是使用一个对象来获取每个子对象的名称和链接(每个子对象都需要一个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

试图解析维基百科页面的HTML不是一个好主意。你应该改用。