私は現在wikiを開発しており、情報をwikiに投稿し続けます。しかし、私はPythonコードを使ってwikiから情報を取得する必要があります。例えば、私が会社についてのwikiページを持っているとしたら、コカコーラは、私がPythonプログラムに解析されるためにwikiに投稿したすべての情報(テキスト)を必要とします。これを行う方法がある場合は教えてください。Wikiからデータを取得する
ありがとうございます!
私は現在wikiを開発しており、情報をwikiに投稿し続けます。しかし、私はPythonコードを使ってwikiから情報を取得する必要があります。例えば、私が会社についてのwikiページを持っているとしたら、コカコーラは、私がPythonプログラムに解析されるためにwikiに投稿したすべての情報(テキスト)を必要とします。これを行う方法がある場合は教えてください。Wikiからデータを取得する
ありがとうございます!
urllibまたはhttplibでページをダウンロードし、正規表現で解析して、必要な正確な情報を抽出することです。長いかもしれませんが、比較的簡単です。
多分、ページ、パーサーなどのソースを分析するための他の解決策があります。私はそれらについて十分に知りません。
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の一部です。
これまで私はSemanticMediawikiを使っていましたが、これはかなりうまく動作することがわかりました。それはひどく柔軟ではありませんが、複雑なことをしている場合は、カスタムプラグインを作成したり、外部サービスに委任して作業を行うことができます。
私は最終的に、余分な処理を行うために多くのPython Webサービスを作成しました。