如何使用Wikipedia API提取/解析我正在寻找的链接?

时间:2015-01-18 07:45:33

标签: java mediawiki wikipedia wikipedia-api mediawiki-api

在维基百科中,95%的链接指向哲学页面。我正在尝试用Java编写一个程序,它接受维基百科上的任何链接并点击第一个链接(这不是引用/声音/无关链接,也忽略了父母化的链接。)

例如,如果您从此网址http://en.wikipedia.org/wiki/Dutch_people开始,则应该点击种族群组http://en.wikipedia.org/wiki/Ethnic_group,依此类推,直至达到哲学

你应该看到这个Getting_to_Philosophy 检查http://xefer.com/wikipedia(输入任何单词)以查看其工作原理。

我已经编写了后端,将数据存储在3列的数据库中  Unique_URL_Id URL_Link Next_URL_Id所以后者打印整条路径会更容易。

后端工作正常(如果我只给它一个链接列表)。但是,提取和查找第一个链接是行不通的。

以下是我编写的示例代码,仅用于使用jSoap API从URL中提取

public static void extractWikiPage(String title) throws IOException{

        Document doc = Jsoup.connect("http://en.wikipedia.org/wiki/Europe").get();
        //int titles = doc.toString().indexOf("(");

        //Get the first paragraph where the main body contents starts
        String body = doc.getElementsByTag("p").first().toString();
        System.out.println(body);                   
            Document doc2= Jsoup.parse(body);
            Elements href=doc2.getElementsByTag("a");
            int x="".indexOf("");
            for(Element h: href){
                System.out.println(h.toString());
            }
            //System.out.println(linkText);
            System.exit(1);

        }

我只是发现了'<p>'的第一次出现,因为那是95%的下一页链接开始的地方。在那一段中,我试图得到所有的链接,但我需要第一个满足我上面描述的条件。

如何使用Wikipedia API解决我正在寻找的数据。感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

/w/api.php?action=query&prop=revisions&format=json&rvprop=content&rvlimit=1&rawcontinue=&titles=Dutch_people是返回该页面的wiki文本的查询。

您必须解析该结果才能获得所需的数据。您正在寻找[[double square brackets]]内部的第一件事(可能在/\{\{Infobox(.*?)\}\}/i之后或类似的事情,以排除信息框中的链接和可能在页面上的任何维护标签)不要从&#34;开始:&#34;&#34;消除所有interwiki链接和类别以及文件/媒体页面。