API:查詢
本页是MediaWiki Action API帮助文档的一部份。 |
action=query模組允许你取得有關維基和其中保存資料的資訊,例如特定頁面的維基文本,一組頁面的連結和分類,或是更改維基內容 所需要的存取權杖。
API帮助文档
查詢模組
查詢模組有三種子模块(也被稱為查詢模組):
示例
範例1:指定頁面
Unlike meta and list query modules, all property query modules work on a set of pages that can be specified in one of the following ways:
- By name using the
titles
parameter, e.g.titles=Foo|Bar|Main_Page
.
- By page ID using the
pageids
parameter, e.g.pageids=123|456|75915
.
- By revision ID using the
revids
parameter, e.g.revids=478198|54872|54894545
.
Most query modules will convert revision ID to the corresponding page ID. Only prop=revisions actually uses the revision ID itself.
- Using a generator.
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:標題正規化
Title normalization converts page titles to their canonical form.
This means capitalizing the first character, replacing underscores with spaces, and changing namespace to the localized form defined for that wiki.
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:不存在和無效標題
Titles that don't exist or are invalid will have a missing
or invalid
attribute set in the response.
In output formats that support numeric array keys, missing and invalid titles will have negative page IDs.
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:繼續查詢
When all the data is not returned in the response of a query, there will be a continue
attribute to indicate that there is more data.
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"
}
]
}
}
To get further data, add its values to the original request:
GET request
Response
{
"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"
}
]
}
}
Example 5: Batchcomplete
The API returns a batchcomplete
element to indicate that all data for the current batch of items has been returned.
MW 1.25+
In the response of the sample query below, batchcomplete
has been included to indicate that all the data for each of the three images has been returned.
The next continuation will begin returning data for the next set of 3 images.
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"
}
]
}
}
Example 6: Generators
Use generators if you want to get data about a set of pages.
For example, to get data about pages in a certain category, instead of querying list=categorymembers
and then querying again with pageids
set to all the returned pages, combine the two API calls into one by using generator=categorymembers
.
When using a list module as a generator, you don't need to specify the pages.
However, for a property module, you should specify the pages which the generator will work on.
For example, to load all pages that are linked to from the main page, use generator=links&titles=Main%20Page
.
Parameters passed to a generator must be prefixed with a g
. For instance, when using generator=backlinks
, use gbllimit
instead of bllimit
.
The sample query below gets links and categories for the first three pages in the main namespace starting with "Ba".
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 .
可能的警告
警告訊息 | 原因 |
---|---|
No support for special pages has been implemented. | Thrown if a title in the Special: or Media: namespace is given. The pages in these namespaces cannot be queried. |
重定向解决方案不能与revids参数一起使用。任何revids所指向的重定向都未被解决。 | 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
附加提醒
- Specifying titles through
titles
orpageids
is limited to 50 titles per query, or 500 for those with theapihighlimits
right. - Use multiple query modules together to get what you need in one request, e.g.
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.
Resolving redirects
Redirects can be resolved automatically, so that the target of a redirect is returned instead of the given title.
When present, they will always contain from
and to
attributes and may contain a tofragment
attribute for those redirects that point to specific sections.
Both normalization and redirection may take place.
In the case of multiple redirects, all redirects will be resolved, and in case of a circular redirect, there might not be a page in the 'pages' section (see also below).
Redirect resolution cannot be used in combination with the revids=
parameter or with a generator generating revids; doing that will produce a warning and will not resolve redirects for the specified revids.
The examples below show how the redirects
parameter works.
结果 |
---|
{
"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
参数的信息。
- Maintained by MediaWiki Interfaces Team.
- Live chat (IRC): #mediawiki-core 連線
- Issue tracker: Phabricator MediaWiki-Action-API (Report an issue)