在维基百科中,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解决我正在寻找的数据。感谢您的帮助。
答案 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链接和类别以及文件/媒体页面。