API:クエリ
このページは MediaWiki 操作 API の説明文書の一部です。 |
action=query
モジュールを使い、特定のウィキとそこに収載されたデータから情報を取得します。指定したページのウィキテキスト、複数ページのリンクやカテゴリ、またウィキの内容を変更する ため必要なトークンを得ることができます。
APIの説明文書
クエリ モジュール群
クエリ モジュールには 3 件の下位モジュールがあります (クエリ モジュールとも呼ぶ):
例
例1: ページの指定
メタやリストクエリと比べると、プロパティクエリ モジュールは全て複数のページを処理でき、以下のいずれかの方法で対象ページを指定します。
- ページ名を指定するには
titles
パラメータを使う。例=titles=Foo|Bar|Main_Page
。 - ページ ID の指定には
pageids
パラメータを使う。例=pageids=123|456|75915
。 - 更新 ID の指定には
revids
パラメータを使う。例=revids=478198|54872|54894545
。 大部分のクエリモジュールでは更新 ID を対応するページ ID に変換します。 実際に更新 ID そのものを使うのは、prop=revisions のみです。 - ジェネレータを使用。
GET リクエスト
レスポンス
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 1130,
"ns": 0,
"title": "Avicenna"
},
{
"pageid": 17412,
"ns": 0,
"title": "Klein bottle"
},
{
"pageid": 33642,
"ns": 0,
"title": "Warrant"
}
]
}
}
例2: タイトルの平準化
タイトルの平準化により、ページ名を基準系に従って変換します。
簡単に言うと1文字目を大文字に、アンダーバー「 _ 」「半角スペースに、またそのウィキに適したページ名に地域化することです。
GET リクエスト
レスポンス
{
"batchcomplete": true,
"query": {
"normalized": [
{
"fromencoded": false,
"from": "Project:articleA",
"to": "Wikipedia:ArticleA"
},
{
"fromencoded": false,
"from": "article_B",
"to": "Article B"
}
],
"pages": [
{
"ns": 0,
"title": "Article B",
"missing": true
},
{
"ns": 4,
"title": "Wikipedia:ArticleA",
"missing": true
}
]
}
}
例3: ページ名がない、あるいは無効
存在しないもしくは無効なページ名は、missing
またはinvalid
属性を付けて返してきます。
数字の並びキーをサポートする出力フォーマットでは、存在しないもしくは無効なページ名には、マイナスのページIDを与えます。
In some cases, a title can be viewed by a user but cannot be accessed by the API, such as pages that mirror content from another wiki.
These titles will have a known
attribute set in the response.
GET リクエスト
レスポンス
{
"batchcomplete": true,
"query": {
"pages": [
{
"ns": 0,
"title": "Doesntexist",
"missing": true
},
{
"title": "Talk:",
"invalidreason": "The requested page title is empty or contains only the name of a namespace.",
"invalid": true
},
{
"pageid": 15580374,
"ns": 0,
"title": "Main Page"
}
]
}
}
例4: 継続型のクエリ
もしクエリに対して返した分以外にもデータがある場合にはcontinue
属性が付いており、追加のデータがあると示します。
GET リクエスト
レスポンス
{
"continue": {
"accontinue": "List_of_largest_companies_in_Sri_Lanka",
"continue": "-||"
},
"query": {
"allcategories": [
{
"category": "List of BioWare characters"
},
{
"category": "List of Harlequin Romance novels"
},
{
"category": "List of MPs elected in UK elections templates"
},
{
"category": "List of Metamorphoses characters"
},
{
"category": "List of Rockstar Games characters"
},
{
"category": "List of Star Trek awards and nominations"
},
{
"category": "List of Swedish films of the 2020s"
},
{
"category": "List of association football clubs in the Republic of Ireland templates"
},
{
"category": "List of awards and nominations received by Aleksej Pechkuroy"
},
{
"category": "List of cabinet templates"
}
]
}
}
残りのデータを取得するには、元のリクエストにその値を追加します:
GET リクエスト
レスポンス
{
"batchcomplete": true,
"query": {
"allcategories": [
{
"category": "List of largest companies in Sri Lanka"
},
{
"category": "List of longest beaches of the world"
},
{
"category": "List of ministers by ministry of Bangladesh"
},
{
"category": "List of people from Palm Beach, Florida"
},
{
"category": "List of video game characters"
}
]
}
}
例5: Batchcomplete
API はbatchcomplete
要素を返し、現在の項目群に対するデータは全て返したと示します。
MW 1.25+
以下のクエリに対してbatchcomplete
をくわえてあるのは、画像3点全てにデータを返したと示しています。
次の継続クエリは、次の画像3点を対象にデータを返します。
GET リクエスト
レスポンス
{
"batchcomplete": true,
"continue": {
"aicontinue": "20020822143445|Do_You_Want_to_Know_a_Secret_(Beatles_song_-_sample).ogg",
"continue": "-||"
},
"query": {
"allimages": [
{
"name": "Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"timestamp": "2002-08-04T19:55:17Z",
"url": "https://upload.wikimedia.org/wikipedia/en/6/64/Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Simon_and_Garfunkel_-_Mrs_Robinson.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=67723",
"ns": 6,
"title": "File:Simon and Garfunkel - Mrs Robinson.ogg"
},
{
"name": "Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"timestamp": "2002-08-04T20:01:36Z",
"url": "https://upload.wikimedia.org/wikipedia/en/c/c1/Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Simon_and_Garfunkel_-_Scarborough_Fair.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=67779",
"ns": 6,
"title": "File:Simon and Garfunkel - Scarborough Fair.ogg"
},
{
"name": "Beatles_please_me.ogg",
"timestamp": "2002-08-22T14:34:00Z",
"url": "https://upload.wikimedia.org/wikipedia/en/e/ee/Beatles_please_me.ogg",
"descriptionurl": "https://en.wikipedia.org/wiki/File:Beatles_please_me.ogg",
"descriptionshorturl": "https://en.wikipedia.org/w/index.php?curid=74826",
"ns": 6,
"title": "File:Beatles please me.ogg"
}
]
}
}
例6: ジェネレータ
複数ページからデータを得るには、ジェネレータを使います。
例えば特定のカテゴリ内の複数ページからデータを得るには、クエリlist=categorymembers
を実行してからその結果のページにもう一度、クエリpageids
をかけるのではなく、generator=categorymembers
を使い2件のAPIを組み合わせます。
一覧モジュールをジェネレータとして使う場合は、対象ページの指定は不要です。
ただし属性のモジュールには ジェネレーターの作業対象の ページを指定する必要があります。
例えばメインページのリンク先のページを読み込むには、generator=links&titles=Main%20Page
を使用します。
パラメーターをジェネラーターに送るには、接頭辞 g
が必須です。一例として generator=backlinks
を使う場合は gbllimit
を使い、bllimit
は使いません。
下記のクエリ見本では、メインの名前空間から「Ba」で始まるページの最初の3件について、リンクとカテゴリを取得します。
GET リクエスト
レスポンス
{
"continue": {
"plcontinue": "14977970|0|Kirkwall_Ba_game",
"continue": "||categories"
},
"query": {
"pages": [
{
"pageid": 98178,
"ns": 0,
"title": "Ba",
"links": [
{
"ns": 0,
"title": "BA"
},
{
"ns": 4,
"title": "Wikipedia:Mainspace"
},
{
"ns": 4,
"title": "Wikipedia:Naming conventions (capitalization)"
},
{
"ns": 4,
"title": "Wikipedia:Protection policy"
},
{
"ns": 4,
"title": "Wikipedia:Redirect"
},
{
"ns": 10,
"title": "Template:R from miscapitalisation"
},
{
"ns": 10,
"title": "Template:R from modification"
},
{
"ns": 10,
"title": "Template:R to disambiguation page"
},
{
"ns": 14,
"title": "Category:Redirects from ambiguous terms"
},
{
"ns": 14,
"title": "Category:Redirects from other capitalisations"
}
],
"categories": [
{
"ns": 14,
"title": "Category:Redirects from ambiguous terms"
},
{
"ns": 14,
"title": "Category:Redirects from other capitalisations"
},
{
"ns": 14,
"title": "Category:Unprintworthy redirects"
}
]
},
{
"pageid": 14977970,
"ns": 0,
"title": "Ba'"
},
{
"pageid": 33351890,
"ns": 0,
"title": "Ba'Al Shem Tov"
}
]
}
}
Continuing queries
Queries will often have more results available than are just shown in the original query. (Often this is because a List query's result limit has been reached.) In these cases, queries can be continued. More detailed information on continuing queries can be at API:Continue .
起こりうる警告
警告メッセージ | 原因 |
---|---|
特別ページはサポートの対象外です。 | Thrown if a title in the Special: or Media: namespace is given. The pages in these namespaces cannot be queried. |
Redirect resolution cannot be used together with the revids parameter. Any redirects the revids point to have not been resolved. | Thrown if the redirect parameter is used in a query that specifies pages using revids .
|
パラメーターの履歴
- v1.34: Introduced
exportschema
- v1.24:
rawcontinue
を導入しました (note: raw continuation was the default behavior until v1.26) - v1.21:
continue
を導入しました
追加的な注記
- タイトルの指定に
titles
またはpageids
を指定できる件数の上限は、クエリ1回あたりタイトル数 50 件、もしくはapihighlimits
権限に対して500件です。 - 単一のリクエストで期待する結果を得るには、例えば
prop=info|revisions&list=backlinks|embeddedin|allimages&meta=userinfo
のように、複数のクエリを組み合わせます。 - Generators always pass page titles to the query module. Unlike lists (which may include additional data by default), generators should not output any information themselves, unless when explicitly requested via the generator module's query parameters.
リダイレクトの解消
リダイレクトは自動的に解消されるため、多くの場合、入力した題名の代わりにリダイレクト先を返します。
リダイレクトが存在する場合は必ず from
と to
属性を、また特定の節へのリダイレクトの場合には tofragment
属性を内包します。
正常化とリダイレクトは同時に実行可能です。
副次のリダイレクトの事例では解消の対象はすべてのリダイレクトであり、循環リダイレクトでは「ページ」節に必ずしも固有のページを示さないことがあります (リクエスト例を参照。)
リダイレクトを解消する場合、パラメーターrevids=
、また変更履歴IDを生成する生成器と組み合わせはできません。実行しようとすると警告を表示し、指定した履歴IDのリダイレクトは解消しません。
下記の例でパラメーターredirects
の挙動を説明します。
結果 |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Main page",
"to": "Main Page"
}
],
"pages": [
{
"pageid": 15580374,
"ns": 0,
"title": "Main Page"
}
]
}
}
|
結果 |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 217225,
"ns": 0,
"title": "Main page"
}
]
}
}
|
結果 |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 217225,
"ns": 0,
"title": "Main page",
"contentmodel": "wikitext",
"pagelanguage": "en",
"pagelanguagehtmlcode": "en",
"pagelanguagedir": "ltr",
"touched": "2017-12-17T02:02:05Z",
"lastrevid": 777924062,
"length": 170,
"redirect": true
}
]
}
}
|
結果 |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "Wikipedia:!--",
"to": "Wikipedia:Manual of Style",
"tofragment": "Invisible comments"
}
],
"pages": [
{
"pageid": 33697,
"ns": 4,
"title": "Wikipedia:Manual of Style"
}
]
}
}
|
結果 |
---|
{
"batchcomplete": true,
"query": {
"normalized": [
{
"fromencoded": false,
"from": "page1",
"to": "Page1"
}
],
"redirects": [
{
"from": "Page1",
"to": "Page2"
},
{
"from": "Page2",
"to": "Page3"
},
{
"from": "Page3",
"to": "Page1"
}
],
"pages": [
{
"ns": 0,
"title": "Page1",
"missing": true
}
]
}
}
|
関連項目
- API:メインページ - クイック スタート ガイド。
- API:Raw query continue - パラメーター
rawcontinue
の使い方の情報を掲載。
- MediaWiki Interfaces Team が保守しています。
- ライブ チャット (IRC): #mediawiki-core 接続
- 問題点追跡: Phabricator MediaWiki-Action-API (問題点を報告)