質問

私は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で可能ですか?

役に立ちましたか?

解決

テキストを取得するためにAPIを使用することは不可能だと思います。

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

編集:

Java用の HTMLパーサーを使用して、良い結果が得られました。特定のDIVでHTMLタグを取り除く方法の例があります。

他のヒント

action = parse を使用してhtmlを取得します:

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

>

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

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

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

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

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

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

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 = :リダイレクトの問題を解決します。

この質問に来たPythonユーザーは、 wikipedia に興味があるかもしれません。モジュール(ドキュメント):

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

セクション( == )を除くすべてのフォーマットは削除されます。

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

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

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

コンテンツがページに取り込まれた後に1つのことができます-PHP関数 strip_tags()を使用してHTMLタグを削除できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top