Jump to content

API:所有页面

From mediawiki.org
This page is a translated version of the page API:Allpages and the translation is 100% complete.
MediaWiki版本:
1.8

GET请求用于在命名空间 中列出所有符合特定条件的页面。

该模块可用作生成器

API帮助文档

list=allpages (ap)

(main | query | allpages)
  • This module requires read rights.
  • This module can be used as a generator.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Enumerate all pages sequentially in a given namespace.

Specific parameters:
Other general parameters are available.
apfrom

The page title to start enumerating from.

apcontinue

When more results are available, use this to continue. More detailed information on how to continue queries can be found on mediawiki.org.

apto

The page title to stop enumerating at.

apprefix

Search for all page titles that begin with this value.

apnamespace

The namespace to enumerate.

One of the following values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 90, 91, 92, 93, 100, 101, 102, 103, 104, 105, 106, 107, 486, 487, 710, 711, 828, 829, 1198, 1199, 2600, 5500, 5501
Default: 0
apfilterredir

Which pages to list.

Note: Due to miser mode, using this may result in fewer than aplimit results returned before continuing; in extreme cases, zero results may be returned.

One of the following values: all, nonredirects, redirects
Default: all
apfilterlanglinks

Filter based on whether a page has langlinks. Note that this may not consider langlinks added by extensions.

One of the following values: all, withlanglinks, withoutlanglinks
Default: all
apminsize

Limit to pages with at least this many bytes.

Type: integer
apmaxsize

Limit to pages with at most this many bytes.

Type: integer
apprtype

Limit to protected pages only.

Values (separate with | or alternative): edit, move, upload
apprlevel

Filter protections based on protection level (must be used with apprtype= parameter).

Values (separate with | or alternative): Can be empty, or autoconfirmed, sysop
apprfiltercascade

Filter protections based on cascadingness (ignored when apprtype isn't set).

One of the following values: all, cascading, noncascading
Default: all
apprexpiry

Which protection expiry to filter the page on:

indefinite
Get only pages with indefinite protection expiry.
definite
Get only pages with a definite (specific) protection expiry.
all
Get pages with any protections expiry.
One of the following values: all, definite, indefinite
Default: all
aplimit

How many total pages to return.

Type: integer or max
The value must be between 1 and 500.
Default: 10
apdir

The direction in which to list.

One of the following values: ascending, descending
Default: ascending


示例

GET请求

获取包含前缀"Jungle"的所有页面

回应

结果中的条目按页面标题的字母顺序列出。
{
    "batchcomplete": "",
    "continue": {
        "apcontinue": "Jungle_(Bakufu_Slump_album)",
        "continue": "-||"
    },
    "query": {
        "allpages": [
            {
                "pageid": 341265,
                "ns": 0,
                "title": "Jungle"
            },
            {
                "pageid": 56461312,
                "ns": 0,
                "title": "Jungle-runner"
            },
            {
                "pageid": 18698572,
                "ns": 0,
                "title": "Jungle/Drum n bass"
            },
            {
                "pageid": 1487899,
                "ns": 0,
                "title": "Jungle2jungle"
            },
            {
                "pageid": 30391179,
                "ns": 0,
                "title": "JunglePup"
            }
            ...
        ]
    }
}

示例代码

Python

#!/usr/bin/python3

"""
    get_allpages.py

    MediaWiki API Demos
    Demo of `Allpages` module: Get all pages whose title contains the text
    "Jungle," in whole or part.

    MIT License
"""

import requests

S = requests.Session()

URL = "https://en.wikipedia.org/w/api.php"

PARAMS = {
    "action": "query",
    "format": "json",
    "list": "allpages",
    "apfrom": "jungle",
}

R = S.get(url=URL, params=PARAMS)
DATA = R.json()

PAGES = DATA["query"]["allpages"]

for page in PAGES:
    print(page["title"])

PHP

<?php
/*
    get_allpages.php

    MediaWiki API Demos
    Demo of `Allpages` module: Get all pages whose title contains the text "Jungle," in whole or part.

    MIT License
*/

$endPoint = "https://en.wikipedia.org/w/api.php";
$params = [
    "action" => "query",
    "format" => "json",
    "list" => "allpages",
    "apfrom" => "jungle"
];

$url = $endPoint . "?" . http_build_query( $params );

$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$output = curl_exec( $ch );
curl_close( $ch );

$result = json_decode( $output, true );

foreach( $result["query"]["allpages"] as $k => $v ) {
    echo( $v["title"] . "\n" );
}

JavaScript

/*
    get_allpages.js

    MediaWiki API Demos
    Demo of `Allpages` module: Get all pages whose title contains the text "Jungle," in whole or part.

    MIT License
*/

let url = "https://en.wikipedia.org/w/api.php";

const params = {
    action: "query",
    format: "json",
    list: "allpages",
    apfrom: "jungle"
}

url += "?origin=*"

Object.keys(params).forEach((key) => {
    url += `&${key}=${params[key]}`
})

fetch(url)
    .then((response) => {
        return response.json()
    })
    .then((response) => {
        const pages = response.query.allpages

        for (let p in pages) {
            console.log(pages[p].title)
        }
    })
    .catch((error) => {
        console.log(error)
    })

MediaWiki JS

/*
	get_allpages.js

	MediaWiki API Demos
	Demo of `Allpages` module: Get all pages whose title contains the text "Jungle,"
	in whole or part.

	MIT License
*/

var params = {
		action: 'query',
		format: 'json',
		list: 'allpages',
		apfrom: 'jungle'
	},
	api = new mw.Api();

api.get( params ).done( function ( data ) {
	var pages = data.query.allpages,
		p;
	for ( p in pages ) {
		console.log( pages[ p ].title );
	}
} );

可能的错误

代码 信息
invalidparammix prlevel参数只能与prtype一起使用。

參見