현재 위키를 개발 중이며 정보를 위키에 계속 게시합니다. 그러나, 나는 위키에서 파이썬 코드를 사용하여 정보를 가져와야 할 것이다. 예를 들어, 회사에 관한 위키 페이지가 있다면, 코카콜라 (Coca Cola)와 같이 위키에 게시 한 모든 정보 (텍스트)가 파이썬 프로그램으로 파싱되어야합니다. 이 작업을 수행 할 수있는 방법이 있으면 알려주십시오.위키에서 데이터 가져 오기
감사합니다.
현재 위키를 개발 중이며 정보를 위키에 계속 게시합니다. 그러나, 나는 위키에서 파이썬 코드를 사용하여 정보를 가져와야 할 것이다. 예를 들어, 회사에 관한 위키 페이지가 있다면, 코카콜라 (Coca Cola)와 같이 위키에 게시 한 모든 정보 (텍스트)가 파이썬 프로그램으로 파싱되어야합니다. 이 작업을 수행 할 수있는 방법이 있으면 알려주십시오.위키에서 데이터 가져 오기
감사합니다.
urllib 또는 httplib로 페이지를 다운로드 한 다음 regexes로 분석하여 원하는 정확한 정보를 추출하는 것입니다. 길긴하지만 상대적으로 쉽습니다.
아마도 페이지, 파서 또는 이와 비슷한 소스를 분석 할 다른 해결책이있을 수 있습니다. 나는 그들에 대해 충분히 알지 못한다.
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의 일부입니다.
과거에 이런 종류의 작업을 수행 한 결과, SemanticMediawiki을 사용하여 정상적으로 작동하는 것으로 나타났습니다. 대단히 유연하지는 않지만 복잡한 작업을 수행하는 경우 사용자 정의 플러그인을 작성하거나 외부 서비스에 위임하여 작업을 수행 할 수 있습니다.
궁극적으로 추가 처리를 위해 많은 파이썬 웹 서비스를 작성하게되었습니다.