コンテンツの概要を取得するためだけにクリーンなウィキペディアAPIがありますか?

私はウィキペディアのページの最初の段落を取得する必要があります。 コンテンツはHTML形式で作成し、私のウェブサイトに表示する準備ができている必要があります(BBCODEまたはWIKIPEDIA特別コードはありません)。

121
あなたは何かを見つけましたか?私は以下の回答を受け入れましたが、もし私が "Coral"と言うと、間違った説明や要約を得ることになったり、検索のために他のものを使いましたか?
追加された 著者 Deepanshu Goyal,
iOSのコンテンツ(テキストのみ)を最低10行取得するには、wikipedia apiが必要です。これのための任意のAPIはありますか?
追加された 著者 vipulk617,
WikipediaはBBコードを使用せず、独自のwikiマークアップコードを使用します。
追加された 著者 svick,
@Deepanshu私は映画やテレビ番組のために何かを探していました。メタデータ用のSaasを構築しました。メディアコンテンツに興味がある場合は、これが役に立ちます
追加された 著者 sparkle,
それはすべてのウィキペディアの記事では機能しません。 ro.wikipedia。 org/w /…
追加された 著者 dumitru,

12 答え

どのようなhtml解析もせずに「イントロセクション」全体を取得する方法があります!追加の explaintext パラメータを含むAnthonySの回答と同様に、イントロセクションテキストをプレーンテキストで取得できますテキスト。

クエリ

スタックオーバーフローのイントロをプレーンテキストで取得する:

https://en.wikipedia.org/w/api.php?format=json&action=クエリ&prop=extracts&exintro&explaintext&redirects=1&titles=Stack%20Overflow

JSONレスポンス

(警告は取り除かれた)

{
    "クエリ": {
        "pages": {
            "21721040": {
                "pageid": 21721040,
                "ns": 0,
                "title": "Stack Overflow",
                "extract": "Stack Overflow is a privately held website, the flagship site of the Stack Exchange Network, created in 2008 by Jeff Atwood and Joel Spolsky, as a more open alternative to earlier Q&A sites such as Experts Exchange. The name for the website was chosen by voting in April 2008 by readers of Coding Horror, Atwood's popular programming blog.\nIt features questions and answers on a wide range of topics in computer programming. The website serves as a platform for users to ask and answer questions, and, through membership and active participation, to vote questions and answers up or down and edit questions and answers in a fashion similar to a wiki or Digg. Users of Stack Overflow can earn reputation points and \"badges\"; for example, a person is awarded 10 reputation points for receiving an \"up\" vote on an answer given to a question, and can receive badges for their valued contributions, which represents a kind of gamification of the traditional Q&A site or forum. All user-generated content is licensed under a Creative Commons Attribute-ShareAlike license. Questions are closed in order to allow low quality questions to improve. Jeff Atwood stated in 2010 that duplicate questions are not seen as a problem but rather they constitute an advantage if such additional questions drive extra traffic to the site by multiplying relevant keyword hits in search engines.\nAs of April 2014, Stack Overflow has over 2,700,000 registered users and more than 7,100,000 questions. Based on the type of tags assigned to questions, the top eight most discussed topics on the site are: Java, JavaScript, C#, PHP, Android, jクエリ, Python and HTML."
            }
        }
    }
}

Documentation: API: クエリ/prop=extracts


Edit: Added &redirects=1 as recommended in comments.

156
追加された
私はwiki呼び出しからjson出力を得て、jsonを配列$ data = json_decode($ json、true)にキャストしました。次に、 $ extract = current((array)$ data-> query-> pages) - > extract; を使って 'extract'を取得しようとします。しかし、「注意:非目的物の財産を取得しようとしている」ということは今後も続く。
追加された 著者 shikhar bansal,
シノニムのコンテンツに自動的にリダイレクトする&redirects = 1 を使用することをお勧めします
追加された 著者 joecks,
ページ番号が分からない場合は、このJSONレスポンスからどのように情報を取得できますか?私は "抽出"を含むJSON配列にアクセスできません
追加された 著者 Laurynas G,
@LaurynasGオブジェクトを配列にキャストして、次のように取得できます:$ extract = current(array)$ json_query-> query-> pages) - > extract
追加された 著者 MarcGuay,
@LaurynasG、@MarcGuayまた、 indexpageids をパラメータとして追加することもできます。より簡単な反復のためにページIDのリストを得るためのURL。
追加された 著者 Rami,
Wikipediaの記事の要約を表示するために特別に作成された、新しい簡単なAPIがあります。私の答えをチェックしてください。
追加された 著者 Lukas Winkler,

実際に の抽出物と呼ばれる非常に素晴らしい小道具がありますこの目的のために特別に設計されたクエリで使用することができます 。エクストラクトを使用すると、記事抽出(切り捨てられた記事テキスト)を取得できます。 第0セクションのテキストを取得するために使用できる exintro というパラメータがあります(イメージやinfoboxなどの追加アセットはありません)。特定の文字数( exchars )や特定の文章数( exsentences )など、細かい粒度で抽出することもできます

Here is a sample query http://en.wikipedia.org/w/api.php?action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow and the API sandbox http://en.wikipedia.org/wiki/Special:ApiSandbox#action=query&prop=extracts&format=json&exintro=&titles=Stack%20Overflow to experiment more with this query.

特に最初の段落が必要な場合は、選択した回答に示唆されているように、さらに構文解析を行う必要があることに注意してください。違いは、このクエリによって返されるレスポンスは、解析するapiレスポンスに画像などの追加のアセットがないため、提案された他のAPIクエリよりも短いことです。

70
追加された
あなたは爆弾です。
追加された 著者 boztalay,
検索結果が10の抽出を使用する場合はどうすればよいですか?
追加された 著者 Anwar,

このコードでは、ページの最初の段落の内容をプレーンテキストで取得できます。

この回答の一部は、ここにありますので、こちらをご覧ください。詳細については、 MediaWiki APIのドキュメントを参照してください。

// action=parse: get parsed text
// page=Baseball: from the page Baseball
// format=json: in json format
// prop=text: send the text content of the article
// section=0: top content of the page

$url = 'http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Baseball&prop=text§ion=0';
$ch = curl_init($url);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_USERAGENT, "TestScript");//required by wikipedia.org server; use YOUR user agent with YOUR contact information. (otherwise your IP might get blocked)
$c = curl_exec($ch);

$json = json_decode($c);

$content = $json->{'parse'}->{'text'}->{'*'};//get the main text content of the query (it's parsed HTML)

// pattern for first match of a paragraph
$pattern = '#

(.*)

#Us';//http://www.phpbuilder.com/board/showthread.php?t=10352690 if(preg_match($pattern, $content, $matches)) { //print $matches[0];//content of the first paragraph (including wrapping

tag) print strip_tags($matches[1]);//Content of the first paragraph without the HTML tags. }

39
追加された
しかし、あなたが "サンゴ"を検索すると、その結果は必要ではないものになります。それ以外の方法はありますか?smmaryを持つpタグのみが取得できます。
追加された 著者 Deepanshu Goyal,
こんにちは、私はCnnを渡す場合、私はこのメッセージを得た。これは、別の大文字方法を使用したタイトルからのリダイレクトです。 Wikipediaの大文字の命名規則に準拠したタイトルになり、執筆、検索、および国際的な言語問題に役立ちます。これはどういう意味ですか?
追加された 著者 Nikunj Dhimar,
うん!私はちょうどこれを探しています!まったく!すべては完璧ですが、最初は "新しいライン"で止まります。セクションの最後まですべてのテキストを返しません
追加された 著者 sparkle,
もちろん、あなたの質問では、最初の段落を取得するだけでよいのです。
追加された 著者 Alexandre Vaillancourt,

はいあります。たとえば、記事の最初のセクション(スタックオーバーフロー)の内容を取得するには、次のようなクエリを使用します。

http://en.wikipedia.org/w/api.php?format=xml&action=query&prop=revisions&titles=Stack%20Overflow&rvprop=content&rvsection=0&rvparse

これらの部分は、

  • format=xml: Return the result formatter as XML. Other options (like JSON) are available. This does not affect the format of the page content itself, only the enclosing data format.

  • action=query&prop=revisions: Get information about the revisions of the page. Since we don't specify which revision, the latest one is used.

  • titles=Stack%20Overflow: Get information about the page Stack Overflow. It's possible to get the text of more pages in one go, if you separate their names by |.

  • rvprop=content: Return the content (or text) of the revision.

  • rvsection=0: Return only content from section 0.

  • rvparse: Return the content parsed as HTML.

これは、ハットノート(「その他の用途のために...」)、情報ボックスや画像などを含む最初のセクション全体を返します。

さまざまな言語で使用できるライブラリがいくつか用意されており、APIを使用して作業するのが容易になります。そのうちの1つを使用した方がよい場合があります。

27
追加された
リンクの最後に&redirects = true を追加すると、リンク先の記事があればそれにアクセスできます。
追加された 著者 eric.mitchell,
APIはそういうものを提供しません。理由を理解することができます:APIの観点から、この「プレーンテキスト」には正確に何が含まれるべきかは明確ではないためです。たとえば、表をどのように表現するか、[引用要否]を含めるかどうか、ナビゲーションボックスや画像の説明などがあります。
追加された 著者 svick,
私は内容を解析したい広告をHTMLにしたくない、私はちょうど "プレーンテキスト"(どちらもwikipediaコード)
追加された 著者 sparkle,
この回答が掲載されてからはしばらくしていますが、私が大いに助けてくれたことをお知らせしたいと思います!ありがとう!
追加された 著者 cemulate,
@sparkle htmlテキストの代わりにプレーンテキストでセクションの詳細を取得する解決策を見つけましたか?
追加された 著者 Harshal Bhatt,

2017年以来、Wikipediaはより良いキャッシングを提供する REST API を提供しています。 ドキュメントには、あなたの使用に完全に適合する以下のAPIがあります場合。 (新しいページプレビュー機能で使用されています)

https://en.wikipedia.org/api/rest_v1/page/summary/Stack_Overflow returns the following data which can be used to display a summery with a small thumbnail:

{
  "title": "Stack Overflow",
  "displaytitle": "Stack Overflow",
  "pageid": 21721040,
  "extract": "Stack Overflow is a privately held website, the flagship site of the Stack Exchange Network, created in 2008 by Jeff Atwood and Joel Spolsky. It was created to be a more open alternative to earlier question and answer sites such as Experts-Exchange. [...]",
  "extract_html": "

Stack Overflow is a privately held website, the flagship site of the Stack Exchange Network, created in 2008 by Jeff Atwood and Joel Spolsky. It was created to be a more open alternative to earlier question and answer sites such as Experts-Exchange. [...]", "thumbnail": { "source": "https://upload.wikimedia.org/wikipedia/en/thumb/f/fa/Stack_Overflow_homepage%2C_Feb_2017.png/320px-Stack_Overflow_homepage%2C_Feb_2017.png", "width": 320, "height": 149 }, "originalimage": { "source": "https://upload.wikimedia.org/wikipedia/en/f/fa/Stack_Overflow_homepage%2C_Feb_2017.png", "width": 462, "height": 215 }, "lang": "en", "dir": "ltr", "timestamp": "2018-01-30T09:21:21Z", "description": "website hosting questions and answers on a wide range of topics in computer programming" }

By default, it follows redirects (so that /api/rest_v1/page/summary/StackOverflow also works), but this can be disabled with ?redirect=false

23
追加された
これには、あなたが検索したものが「曖昧さ回避」を持っているかどうかを知る必要がある場合は、優れた「タイプ」も含まれます。
追加された 著者 Jeel Shah,
あなたは私の命を救いました
追加された 著者 Eury Pérez Beltré,
AngularベースのアプリケーションからこのリンクにアクセスしようとしているときにCORSエラーが表示されています。
追加された 著者 Praveen Ojha,

This is the code I'm using right now for a website I'm making that needs to get the leading paragraphs/summary/section 0 of off Wikipedia articles, and it's all done within the browser (client side javascript) thanks to the magick of JSONP! --> http://jsfiddle.net/gautamadude/HMJJg/1/

It uses the Wikipedia API to get the leading paragraphs (called section 0) in HTML like so: http://en.wikipedia.org/w/api.php?format=json&action=parse&page=Stack_Overflow&prop=text§ion=0&callback=?

次に、HTMLやその他の望ましくないデータを取り除いて、記事要約のきれいな文字列を与えます。ちょっとした調整をして、先頭の段落の "p" htmlタグを得ることができれば、改行がありますそれらの間の性格。

コード:

var url = "http://en.wikipedia.org/wiki/Stack_Overflow";
var title = url.split("/").slice(4).join("/");

//Get Leading paragraphs (section 0)
$.getJSON("http://en.wikipedia.org/w/api.php?format=json&action=parse&page=" + title + "&prop=text§ion=0&callback=?", function (data) {
    for (text in data.parse.text) {
        var text = data.parse.text[text].split("

"); var pText = ""; for (p in text) { //Remove html comment text[p] = text[p].split("<!--"); if (text[p].length > 1) { text[p][0] = text[p][0].split(/\r\n|\r|\n/); text[p][0] = text[p][0][0]; text[p][0] += "

"; } text[p] = text[p][0]; //Construct a string from paragraphs if (text[p].indexOf("

") == text[p].length - 5) { var htmlStrip = text[p].replace(/<(?:.|\n)*?>/gm, '') //Remove HTML var splitNewline = htmlStrip.split(/\r\n|\r|\n/); //Split on newlines for (newline in splitNewline) { if (splitNewline[newline].substring(0, 11) != "Cite error:") { pText += splitNewline[newline]; pText += "\n"; } } } } pText = pText.substring(0, pText.length - 2); //Remove extra newline pText = pText.replace(/\[\d+\]/g, ""); //Remove reference tags (e.x. [1], [4], etc) document.getElementById('textarea').value = pText document.getElementById('div_text').textContent = pText } });
15
追加された
これをクライアントサイドスクリプトに追加しますか?もしそうなら、それはXSSですか?
追加された 著者 craig,
バグが多いので、このリンクをスクリプトで試してください: en.wikipedia.org/wiki/Modular_Advanced_Armed_Robotic_System
追加された 著者 rohankvashisht,

このURLはXML形式で要約を返します。

http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString=Agra&MaxHits=1

私はウィキペディアからキーワードの説明を取得する関数を作成しました。

function getDescription($keyword){
    $url='http://lookup.dbpedia.org/api/search.asmx/KeywordSearch?QueryString='.urlencode($keyword).'&MaxHits=1';
    $xml=simplexml_load_file($url);
    return $xml->Result->Description;
}
echo getDescription('agra');
8
追加された
どのようにJsonP出力を取得するので、私はjqueryでクライアント側のjavascriptで結果を解析できますか?
追加された 著者 supersan,

DBPedia を介して最初のページグラフなどのコンテンツを取得することもできます。このコンテンツはWikipediaのコンテンツを取得し、そこから構造化された情報(RDF)を作成し、 API。 DBPedia APIはSPARQL API(RDFベース)ですが、JSONを出力してラップするのは簡単です。

As an example here's a super simple JS library named WikipediaJS that can extract structured content including a summary first paragraph: http://okfnlabs.org/wikipediajs/

You can read more about it in this blog post: http://okfnlabs.org/blog/2012/09/10/wikipediajs-a-javascript-library-for-accessing-wikipedia-article-information.html

The JS library code can be found here: https://github.com/okfn/wikipediajs/blob/master/wikipedia.js

5
追加された

私のアプローチは以下の通りです(PHP):

$url = "whatever_you_need"

$html = file_get_contents('https://en.wikipedia.org/w/api.php?action=opensearch&search='.$url);
$utf8html = html_entity_decode(preg_replace("/U\+([0-9A-F]{4})/", "&#x\\1;", $html), ENT_NOQUOTES, 'UTF-8');

$utf8html might need further cleaning, but that's basically it.

1
追加された
あなたはここでどのように動作するか見ることができます: trovawiki.altervista.org/oggi.php
追加された 著者 Alex,
APIからutf8に&utf8 =
追加された 著者 TomoMiha,

私は@Michael Rapadasと@ Krinkleの解決策を試しましたが、私の場合は大文字に応じていくつかの記事を見つけるのが難しかったです。ここのような:

https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&exsentences=1&explaintext=&titles=Led%20zeppelin

Note I truncated the response with exsentences=1

明らかに「タイトルの正規化」が正しく機能していなかった:

タイトルの正規化は、ページタイトルを標準形式に変換します。この   最初の文字を大文字にすることを意味し、下線を   スペース、および変更された名前空間を、そのために定義されたローカライズされた形式   wiki。タイトルの正規化は、どちらに関係なく自動的に行われます。   クエリモジュールが使用されます。ただし、後続の改行はページ内で   タイトル(\ n)は奇妙な動作を引き起こし、それらは取り除かれるべきです   まず。

私は大文字小文字の問題を簡単に分類することができたことは知っていますが、オブジェクトを配列にキャストしなければならないという不便さもありました。

だから、私は本当によく知られた定義された検索(別の記事から情報を取得するリスクなし)の最初の段落を欲しかったので、私はこのようにしました:

https://en.wikipedia.org/w/api.php?action=opensearch&search=led%20zeppelin&limit=1&format=json

Note in this case I did the truncation with limit=1

こちらです:

  1. レスポンスデータに非常に簡単にアクセスできます。
  2. レスポンスは非常に小さいです。

しかし、私たちは検索の大文字を慎重にしなければならない。

More info: https://www.mediawiki.org/wiki/API:Opensearch

1
追加された

If you are just looking for the text which you can then split up but don't want to use the API take a look at en.wikipedia.org/w/index.php?title=Elephant&action=raw

0
追加された
"私のウェブサイトに表示される準備ができているので(BBCODE、WIKIPEDIA特別コードはありません!)、これはまさにoppsite
追加された 著者 bluewhile,