2014-04-25 3 views
2

위키 피 디아 infobox에서 데이터를 추출하고 싶고 Wikipedia infobox extraction in Java의 코드를 사용하여 java에서 그렇게하는 방법을 제안했습니다.Extract Wikipedia Infobox 데이터

import edu.jhu.nlp.wikipedia.*; 
public class InfoboxParser { 

    public static void main(String[] args) throws Exception{ 
     WikiXMLParser parser = WikiXMLParserFactory.getSAXParser("/home/siddhartha/Documents/wiki/enwiki-latest-pages-articles.xml"); 
     parser.setPageCallback(new PageCallbackHandler() { 
      public void process(WikiPage page) { 
       InfoBox infobox=page.getInfoBox(); 
       //do something with info box 
      } 
     }); 
     parser.parse(); 
    } 

} 

나는 다음과 같은 오류가 점점 오전 :

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/tools/bzip2/CBZip2InputStream 
    at edu.jhu.nlp.wikipedia.WikiXMLParserFactory.getSAXParser(WikiXMLParserFactory.java:15) 
    at parser.InfoboxParser.main(InfoboxParser.java:7) 
Caused by: java.lang.ClassNotFoundException: org.apache.tools.bzip2.CBZip2InputStream 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 2 more 

I를 내가 그래서 코드 내 일식에 wikixmlj-r43.jar을 사용하고 파이썬 함께 이대로 자바와 편리하지 않다 properties> java build path> libraries 아래에있는 Eclipse에서 JAR을 추가했다. 내가 얻는 것은 CBZip2InputStream 클래스를 찾을 수 없다는 것이다.

도와주세요.

+0

하지 당신에 대한 답변 특정 질문하지만, WikiData와 DBPedia가 이미 당신을 위해 일해 온 공정한 기회가 있습니다. 당신이해야 할 일은 그들의 API에서 얻는 것뿐입니다. – leo

+0

DBpedia를 시도했지만 업데이트되지 않았습니다. 또한 DBpedia에서 원시 infobox를 다운로드하고 스타 도그에로드했습니다. 콜드 플레이에 대한 트리플을 확인했지만, 콜드 플레이에 infobox가 있더라도 아무 것도 없었습니다. 그래도 나는 WikiData에 대해 확신하지 못한다. 그 방향으로 나를 지적 할 수 있으면 고맙겠습니다. – darthsidious

+0

어떤 infoboxes에 관심이 있습니까? – leo

답변

1
Response res = Jsoup.connect("http://en.wikipedia.org/wiki/Carbon") 
      .execute(); 

    String html = res.body(); 

    Document doc = Jsoup.parseBodyFragment(html); 
    Element body = doc.body(); 
    Elements tables = body.getElementsByTag("table");// hasClass("infobox bordered"); 

    for (Element table : tables) { 

     if (table.className().equalsIgnoreCase("infobox bordered")) { 
      System.out.println(table.outerHtml()); 
      break; 
     }