API:所有分类

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page API:Allcategories and the translation is 88% complete.

Other languages:
Deutsch • ‎English • ‎Türkçe • ‎dansk • ‎español • ‎français • ‎polski • ‎русский • ‎中文 • ‎日本語
MediaWiki版本: 1.12

GET request to list all categories that fit certain criteria relating to their titles.

该模块可用作生成器

API文档


list=allcategories (ac)

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

Enumerate all categories.

Parameters:
acfrom

The category to start enumerating from.

accontinue

When more results are available, use this to continue.

acto

The category to stop enumerating at.

acprefix

Search for all category titles that begin with this value.

acdir

Direction to sort in.

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

Only return categories with at least this many members.

Type: integer
acmax

Only return categories with at most this many members.

Type: integer
aclimit

How many categories to return.

No more than 500 (5,000 for bots) allowed.
Type: integer or max
Default: 10
acprop

Which properties to get:

size
Adds number of pages in the category.
hidden
Tags categories that are hidden with __HIDDENCAT__.
Values (separate with | or alternative): size, hidden
Default: (empty)
Examples:
List categories with information on the number of pages in each.
api.php?action=query&list=allcategories&acprop=size [open in sandbox]
Retrieve info about the category page itself for categories beginning List.
api.php?action=query&generator=allcategories&gacprefix=List&prop=info [open in sandbox]

示例

GET请求

从“15th-century caliphs”开始,获取所有分类的列表。

响应

{
    {
    "batchcomplete": "",
    "continue": {
        "accontinue": "15th-century_churches_in_Denmark",
        "continue": "-||"
    },
    "query": {
        "allcategories": [
            {
                "*": "15th-century caliphs"
            },
            {
                "*": "15th-century calligraphers"
            },
            {
                "*": "15th-century card games"
            },
            ...
        ]
    }
}

示例代码

Python

#!/usr/bin/python3

"""
    get_allcategories.py

    MediaWiki API Demos
    Demo of `Allcategories` module: Get all categories, starting from a
    certain point, as ordered by category title.

    MIT License
"""

import requests

S = requests.Session()

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

PARAMS = {
    "action": "query",
    "format": "json",
    "list": "allcategories",
    "acfrom": "15th-century caliphs"
}

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

CATEGORIES = DATA["query"]["allcategories"]

for cat in CATEGORIES:
    print(cat["*"])

PHP

<?php
/*
    get_allcategories.php

    MediaWiki API Demos
    Demo of `Allcategories` module: Get all categories, starting from a certian point, as ordered by category title.

    MIT License
*/

$endPoint = "https://en.wikipedia.org/w/api.php";
$params = [
    "action" => "query",
    "format" => "json",
    "list" => "allcategories",
    "acfrom" => "15th-century caliphs"
];

$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"]["allcategories"] as $k => $v ) {
    echo( $v["*"] . "\n" );
}

Javascript

/*
    get_allcategories.js

    MediaWiki API Demos
    Demo of `Allcategories` module: Get all categories, starting from a certain point, as ordered by category title.

    MIT License
*/

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

var params = {
    action: "query",
    format: "json",
    list: "allcategories",
    acfrom: "15th-century caliphs"
};

url = url + "?origin=*";
Object.keys(params).forEach(function(key){url += "&" + key + "=" + params[key];});

fetch(url)
    .then(function(response){return response.json();})
    .then(function(response) {
        var categories = response.query.allcategories;
        for (var cat in categories) {
            console.log(categories[cat]["*"]);
        }
    })
    .catch(function(error){console.log(error);});

MediaWiki JS

/*
	get_allcategories.js

	MediaWiki API Demos
	Demo of `Allcategories` module: Get all categories,
	starting from a certian point, as ordered by category title.

	MIT License
*/

var params = {
		action: 'query',
		format: 'json',
		list: 'allcategories',
		acfrom: '15th-century caliphs'
	},
	api = new mw.Api();

api.get( params ).done( function ( data ) {
	var categories = data.query.allcategories,
		cat;
	for ( cat in categories ) {
		console.log( categories[ cat ][ '*' ] );
	}
} );

附加提醒

  • This module differs from list=allpages&alnamespace=14 in that categories without descriptions will be listed, while redirects and pages where the category was never used will not.
  • 返回内容可能包括以前使用但后来被删除的分类。
  • 由于返回内容可能包含已删除或以其他方式清空的分类,因此建议使用acmin=1过滤列表,以便仅返回包含一个或多个页面的分类。

参见