2011-02-24 11 views
0

私は現在wikiを開発しており、情報をwikiに投稿し続けます。しかし、私はPythonコードを使ってwikiから情報を取得する必要があります。例えば、私が会社についてのwikiページを持っているとしたら、コカコーラは、私がPythonプログラムに解析されるためにwikiに投稿したすべての情報(テキスト)を必要とします。これを行う方法がある場合は教えてください。Wikiからデータを取得する

ありがとうございます!

答えて

1

urllibまたはhttplibでページをダウンロードし、正規表現で解析して、必要な正確な情報を抽出することです。長いかもしれませんが、比較的簡単です。

多分、ページ、パーサーなどのソースを分析するための他の解決策があります。私はそれらについて十分に知りません。

2

api.phpを使用すると、Wikipediaのソーステキストを入手できます。それは実際の記事だけを含んでいます。

私はドイツ語のウィキペディアのためにこれを書いたので、ウムラウトで動作します。いくつかの他の言語の一部の特殊文字は機能しません(ロシア語の作品なので、アジア言語の一部かもしれません)。これは実施例である:

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") 

あなたがBeautifulStoneSoupとURLと一部を変更する必要があり、実際のソースコードを取得したい場合。

BeautifulStoneSoupはXMLを解析し、BeautifulSoupはHTMLを解析します。どちらもthe BeautifulSoup packageの一部です。

0

これまで私はSemanticMediawikiを使っていましたが、これはかなりうまく動作することがわかりました。それはひどく柔軟ではありませんが、複雑なことをしている場合は、カスタムプラグインを作成したり、外部サービスに委任して作業を行うことができます。

私は最終的に、余分な処理を行うために多くのPython Webサービスを作成しました。

関連する問題