N:::만지작 거리기

N_4. Wikipedia Infobox 활용

joyHong 2012. 7. 20. 13:11

Wikipedia의 데이터는 수많은 사람들이 모여 지식을 모음으로 방대한 양의 데이터를 보유하고 있다.

그중에 wikipedia의 infobox는 상당히 유용한 데이터가 많이 있다.

이 데이터를 사용할 수 있다면, 그리고 사용한다면 

좀더 발전적인 일에 사용할 수 있을 것이다.


그런데 역시 개방과 공유의 페러다임으로 시작한 Wikipedia라서 그런지

infobox의 데이터를 활용할 수 있도록 API를 제공하여 준다.


Wikipedia의 Infobox는 사람들이 어떠한 데이터에 대해 통일된 형식으로 

데이터를 수집하고 업데이트 할 수 있도록 미리 정의한 형식이다. 

따라서 자신의 지식을 Wikipedia로 게재하기 위해서는 Infobox에서 다루는 몇가지 주요 데이터를

infobox template에 따라 작성하고 wikipedia에 제출하도록 되어 있다.

이는 key-value 의 집합으로서 이를 제공받으면 유용하게 사용이 가능하다.




위의 그림에서 우측 빨간색 부분이 Infobox이다.


이 데이터를 받아보기 위해서는

mediawiki에서 제공하는 API를 활용하면 된다.


윤석민에 대한 infobox를 받아보는 API는

http://ko.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&rvsection=0&titles=%EC%9C%A4%EC%84%9D%EB%AF%BC_(1986%EB%85%84)

혹은

http://ko.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&rvsection=0&titles=%EC%9C%A4%EC%84%9D%EB%AF%BC_(1986%EB%85%84)


http://ko.wikipedia.org/w/api.php?action=query 

다음에 API에서 제공하는 인수를 선택하여 실행하면 된다.

titles에 찾고자 하는 자원의 이름을 입력하면 된다.

format에는 xml, txt, json, txtfm, jsonfm 등을 입력하여 여러가지 형태로 결과를 받아 볼 수 있다.


API에 대한 내용은

https://www.mediawiki.org/wiki/API

에서 자세한 사항을 찾아볼 수 있다.


또한 Wikipedia에서는 분류에 해당하는 자원들을 리스트 형태로 보여주기도 하는데



위와 같이 윤석민이 속한 분류는 "분류:대한민국의 야구 선수" 라는 분류로 되어 있다.

여기에는 infobox가 없고 해당하는 분류의 자원들이 list 형태로 나열되어 있다.

이 또한 API를 활용하여 데이터를 받아올 수 있다.


http://ko.wikipedia.org/w/api.php?action=query&list=categorymembers&cmprop=title&cmlimit=max&format=xml&cmtitle=%EB%B6%84%EB%A5%98:%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EC%95%BC%EA%B5%AC_%EC%84%A0%EC%88%98 


이 APi는 cmtitles에서 시작하는 부분이 "분류" 혹은 "Category"라고 시작하는 것에만 해당된다고 APi 설명에 나와있으니 참고해야 한다.

%EB%B6%84%EB%A5%98:%EB%8C%80%ED%95%9C%EB%AF%BC%EA%B5%AD%EC%9D%98_%EC%95%BC%EA%B5%AC_%EC%84%A0%EC%88%98 은 URLDecoder로 확인하면 분류:대한민국의 야구 선수 이다.


자 이제 위의 2개 API를 활용하여 간단한 Java 코딩이면 대한민국 야구 선수에 대한 기본적인 정보들을 Wikipedia에서 받아볼 수 있다..