2011-02-24 9 views
0

현재 위키를 개발 중이며 정보를 위키에 계속 게시합니다. 그러나, 나는 위키에서 파이썬 코드를 사용하여 정보를 가져와야 할 것이다. 예를 들어, 회사에 관한 위키 페이지가 있다면, 코카콜라 (Coca Cola)와 같이 위키에 게시 한 모든 정보 (텍스트)가 파이썬 프로그램으로 파싱되어야합니다. 이 작업을 수행 할 수있는 방법이 있으면 알려주십시오.위키에서 데이터 가져 오기

감사합니다.

답변

1

urllib 또는 httplib로 페이지를 다운로드 한 다음 regexes로 분석하여 원하는 정확한 정보를 추출하는 것입니다. 길긴하지만 상대적으로 쉽습니다.

아마도 페이지, 파서 또는 이와 비슷한 소스를 분석 할 다른 해결책이있을 수 있습니다. 나는 그들에 대해 충분히 알지 못한다.

2

api.php을 사용하면 위키 백과 원본 텍스트를 얻을 수 있습니다. 실제 기사 만 포함됩니다.

독일어 위키 백과에 대해 작성한이 문서는 움라우트에서 사용할 수 있습니다. 다른 언어의 일부 특수 문자는 작동하지 않습니다 (러시아어 작업이므로 일부 아시아 언어 일 수 있음). 이 동작하는 예제입니다 :

import urllib2 
from BeautifulSoup import BeautifulStoneSoup 
import xml.sax.saxutils 

def load(lemma, language="en", format="xml"): 
    """ Get the Wikipedia Source Text (not the HTML source code) 

     format:xml,json, ... 
     language:en, de, ... 

     Returns None if page doesn't exist 
    """ 
    url  = 'http://' + language + '.wikipedia.org/w/api.php' + \ 
       '?action=query&format=' + format + \ 
       '&prop=revisions&rvprop=content' + \ 
       '&titles=' + lemma 
    request = urllib2.Request(url) 
    handle = urllib2.urlopen(request) 
    text  = handle.read() 
    if format == 'xml': 
     soup = BeautifulStoneSoup(text) 
     rev = soup.rev 
     if rev != None: 
      text = unicode(rev.contents[0]) 
      text = xml.sax.saxutils.unescape(text) 
     else: 
      return None 
    return text 

print load("Coca-Cola") 

당신이 URL과 BeautifulStoneSoup와 부분을 변경해야 실제 소스 코드를 얻을 싶은 경우에

.

BeautifulStoneSoup은 XML을 구문 분석하고, BeautifulSoup은 HTML을 구문 분석합니다. 둘 다 the BeautifulSoup package의 일부입니다.

0

과거에 이런 종류의 작업을 수행 한 결과, SemanticMediawiki을 사용하여 정상적으로 작동하는 것으로 나타났습니다. 대단히 유연하지는 않지만 복잡한 작업을 수행하는 경우 사용자 정의 플러그인을 작성하거나 외부 서비스에 위임하여 작업을 수행 할 수 있습니다.

궁극적으로 추가 처리를 위해 많은 파이썬 웹 서비스를 작성하게되었습니다.