web-dev-qa-db-ja.com

APIを介してmediawikiページからテキストコンテンツを取得する

私はMediaWikiを初めて使用しますが、今は少し問題があります。 Wikiページのタイトルがあり、api.phpを使用して上記ページのテキストだけを取得したいのですが、APIで見つけたのはWikiコンテンツを取得する方法だけですページの(wikiマークアップ付き)。このHTTPリクエストを使用しました...

/api.php?action=query&prop=revisions&rvlimit=1&rvprop=content&format=xml&titles=test

しかし、Wikiマークアップのないテキストコンテンツのみが必要です。 MediaWiki APIで可能ですか?

55
Le_Coeur

APIを使用してテキストだけを取得することは不可能だと思います。

私のために働いたのは、HTMLページをリクエストし(ブラウザで使用する通常のURLを使用して)、コンテンツdivの下のHTMLタグを取り除くことでした。

編集:

Javaで HTML Parser を使用すると良い結果が得られました。特定のDIVの下でHTMLタグを取り除く方法の例があります。

5
Eric Normand

使用する action=parse htmlを取得するには:

/ api.php?action = parse&page = test

Htmlからテキストを取得する1つの方法は、JavaScriptを使用してテキストをブラウザーにロードし、ノードをウォークして、テキストノードのみを検索することです。

66
gilly3

APIのTextExtracts拡張機能は、ユーザーが求めていることを実行します。使用する prop=extractsクリーンアップされた応答を取得します。たとえば、 このリンクはStack Overflow記事のテキストをクリーンアップします です。また、セクションタグが含まれているため、記事の個々のセクションを識別できます。

答えに表示可能なリンクを含めるだけで、上記のリンクは次のようになります。

/api.php?format=xml&action=query&prop=extracts&titles=Stack%20Overflow&redirects=true

編集:Amrが述べたように、TextExtractsはMediaWikiの拡張機能であるため、必ずしもすべてのMediaWikiサイトで利用できるとは限りません。

41
eric.mitchell

MediaWikiページの最後に?action=rawを追加すると、最新のコンテンツが生のテキスト形式で返されます。例:- https://en.wikipedia.org/wiki/Main_Page?action=raw

28
baijum

explaintextパラメーターを使用して、APIからテキスト形式のWikiデータを取得できます。さらに、多くのタイトルの情報にアクセスする必要がある場合は、1回の呼び出しですべてのタイトルのwikiデータを取得できます。パイプ文字|を使用して、各タイトルを区切ります。たとえば、このAPI呼び出しは、「Google」ページと「Yahoo」ページの両方からデータを返します。

http://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exlimit=max&explaintext&exintro&titles=Yahoo|Google&redirects=

パラメーター:

  • explaintext:抽出を、制限されたHTMLではなくプレーンテキストとして返します。
  • exlimit=max:複数の結果を返します。最大は現在20です。
  • exintro:最初のセクションの前のコンテンツのみを返します。完全なデータが必要な場合は、これを削除してください。
  • redirects=:リダイレクトの問題を解決します。
23
Anuraj
10
Hardest

この質問に来るPythonユーザーは、 wikipedia モジュール(- docs )に興味があるかもしれません。

import wikpedia
wikipedia.set_lang('de')
page = wikipedia.page('Wikipedia')
print(page.content)

セクション(==)は除去されます。

3
Martin Thoma
2
Yaza

多くの場合、書式設定記号のないWikiページはあまり意味がありません。

必要に応じて、書式設定を自分で取り除くことができますが、その過程でいくつかのものを壊してしまいます。

(検索エンジンのようなものを作成している場合を除き、テキスト部分のみが必要で、書式設定記号を完全に無視できます)

0
Joel L