写真 ブログ 開発室
HOME開発室ウィキペディアのREST APIを使う
キーワード
Web

ウィキペディアのREST APIを使う

ウィキペディアのREST APIを使う

ウィキペディアに用意されたAPI

ウィキペディアには様々な情報を取得するためのAPIが用意されている。

上のリンク先にあるページを見ると、ウィキペディアを含むウィキメディア・プロジェクトでは次の3種類のAPIが使用できると書かれている。

  • MediaWiki 操作 API
  • MediaWiki REST API
  • ウィキメディア REST API

上2つのMediaWiki 操作 APIMediaWiki REST APIはMediaWikiに搭載された汎用的なAPI群であり、ウィキペディア専用に設計されたものではない。

3つ目のウィキメディア REST APIはウィキペディアを含むウィキメディア・プロジェクトのために設計されたMediaWikiの拡張機能となっている。

ウィキメディア REST API

ウィキメディア REST APIはウィキメディア・プロジェクトのデータを操作するために設計された、MediaWikiの拡張機能だ。 ウィキメディアとMediaWikiの名前が非常にややこしいが、まずはそこをしっかり区別して理解する必要がある。 よくわからないという人は簡単に説明した記事があるので読んでみてもらいたい。

ウィキメディア REST APIの一覧

ウィキメディア REST APIの一覧は以下のページで見ることができる。

記事のタイトルや本文、概要などを取得したり、ページをPDFとして取得できるようなAPIなど、様々なものが用意されている。 それぞれのAPI項目を展開すれば詳しい説明を見たり、実際にAPIの動作を試してみたりすることができるようになっている。

まずはどんなAPIがあるのか一通り眺めてみると良いだろう。

記事のメタデータを取得する

試しに記事のメタデータを取得してみよう。

Page Contentを展開するとその中に/page/title/{title}という項目がある。 説明に従って以下のようなURLを作成してみる。

https://ja.wikipedia.org/api/rest_v1/page/title/虹

このURLにアクセスすると以下のようなレスポンスが得られる。

JSON
{ "items": [ { "title": "虹", "page_id": 255181, "rev": 92137478, "tid": "1c7ac040-7491-11ed-853c-a7866cb19370", "namespace": 0, "user_id": 685752, "user_text": "Glayhours", "timestamp": "2022-10-26T14:38:20Z", "comment": "/* 参考文献 */", "tags": [ "mobile edit", "mobile web edit", "advanced mobile edit" ], "restrictions": [], "page_language": "ja", "redirect": false, "page_deleted": null } ] }

記事の概要を取得する

次に特定の記事の概要を取得してみよう。

概要を取得するAPIはPage Contentの中の/page/summary/{title}という項目だ。 先程と同じようにURLを作成してみる。

https://ja.wikipedia.org/api/rest_v1/page/summary/虹

このURLにアクセスすると以下のようなレスポンスが得られる。

JSON
{ "type": "standard", "title": "虹", "displaytitle": "<span class=\"mw-page-title-main\">虹</span>", "namespace": { "id": 0, "text": "" }, "wikibase_item": "Q1052", "titles": { "canonical": "虹", "normalized": "虹", "display": "<span class=\"mw-page-title-main\">虹</span>" }, "pageid": 255181, "thumbnail": { "source": "https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/Double-alaskan-rainbow.jpg/320px-Double-alaskan-rainbow.jpg", "width": 320, "height": 168 }, "originalimage": { "source": "https://upload.wikimedia.org/wikipedia/commons/5/5c/Double-alaskan-rainbow.jpg", "width": 1919, "height": 1008 }, "lang": "ja", "dir": "ltr", "revision": "92137478", "tid": "d87f0d70-553b-11ed-869e-934fcce27b25", "timestamp": "2022-10-26T14:38:20Z", "description": "光が大気中に浮遊する水滴の中を通過する際に屈折・反射することで様々な色が見られる大気工学現象", "description_source": "central", "content_urls": { "desktop": { "page": "https://ja.wikipedia.org/wiki/%E8%99%B9", "revisions": "https://ja.wikipedia.org/wiki/%E8%99%B9?action=history", "edit": "https://ja.wikipedia.org/wiki/%E8%99%B9?action=edit", "talk": "https://ja.wikipedia.org/wiki/%E3%83%8E%E3%83%BC%E3%83%88:%E8%99%B9" }, "mobile": { "page": "https://ja.m.wikipedia.org/wiki/%E8%99%B9", "revisions": "https://ja.m.wikipedia.org/wiki/Special:History/%E8%99%B9", "edit": "https://ja.m.wikipedia.org/wiki/%E8%99%B9?action=edit", "talk": "https://ja.m.wikipedia.org/wiki/%E3%83%8E%E3%83%BC%E3%83%88:%E8%99%B9" } }, "extract": "虹 とは、大気中に浮遊する水滴の中を光が通過する際に、分散することで特徴的な模様が見られる大気光学現象である。", "extract_html": "<p><b>虹</b> とは、大気中に浮遊する水滴の中を光が通過する際に、分散することで特徴的な模様が見られる大気光学現象である。</p>" }

REST APIを使用する際の注意点

これらのウィキメディア REST APIは自由に利用できるよう公開されているものだが、短時間に多数のリクエストを送るような使い方をするとサーバに負荷がかかって悪影響を及ぼす可能性がある。 同じ内容のリクエストであれば一定時間結果をキャッシュしておくなど、リクエストの回数を減らしてサーバへの負荷を軽減するように努めたい。

キーワード
Web
シェアする
サイトマップ SITEMAP 広告 写真 PHOTO
年度
2024 2023 2022 2021 2020 2019 2018 2017 ~2016
アルバム
傑作選 北海道 石鎚山系 ネパール 屋久島 北アルプス
写真の一覧へ
ストックフォトで作品を探す
JOURNEY
2020年 冬の屋久島歩き旅
2019年 厳冬期北海道徒歩横断
旅の一覧へ
ブログ BLOG
カテゴリ
写真 よもやま話
タグ
スポット 道具 心得
ブログの一覧へ
開発室 DEVELOPMENT
カテゴリ
ASP.NET Core C# WordPress PHP TypeScript JavaScript Web
開発室の一覧へ
広告
サイトマップ SITEMAP
スタジオ旅路
https://tabiji.gallery
渡邊 佑
tabiji.gallery (c) 2020 Yu Watanabe サイトマップ SITEMAP 写真 PHOTO
年度
2024 2023 2022 2021 2020 2019 2018 2017 ~2016
アルバム
傑作選 北海道 石鎚山系 ネパール 屋久島 北アルプス
写真の一覧へ
ストックフォトで作品を探す
JOURNEY
2020年 冬の屋久島歩き旅
2019年 厳冬期北海道徒歩横断
旅の一覧へ
ブログ BLOG
カテゴリ
写真 よもやま話
タグ
スポット 道具 心得
ブログの一覧へ
開発室 DEVELOPMENT
カテゴリ
ASP.NET Core C# WordPress PHP TypeScript JavaScript Web
開発室の一覧へ