API:Categorymembers/ko

This page is a translated version of the page API:Categorymembers and the translation is 53% complete.
미디어위키 버전:
1.11

GET request를 이용해 특정 카테고리에 속한 페이지를 나열할 수 있습니다.

API 문서


list=categorymembers (cm)

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

List all pages in a given category.

Specific parameters:
Other general parameters are available.
cmtitle

Which category to enumerate (required). Must include the Category: prefix. Cannot be used together with cmpageid.

cmpageid

Page ID of the category to enumerate. Cannot be used together with cmtitle.

Type: integer
cmprop

Which pieces of information to include:

ids
Adds the page ID.
title
Adds the title and namespace ID of the page.
sortkey
Adds the sortkey used for sorting in the category (hexadecimal string).
sortkeyprefix
Adds the sortkey prefix used for sorting in the category (human-readable part of the sortkey).
type
Adds the type that the page has been categorised as (page, subcat or file).
timestamp
Adds the timestamp of when the page was included.
Values (separate with | or alternative): ids, sortkey, sortkeyprefix, timestamp, title, type
Default: ids|title
cmnamespace

Only include pages in these namespaces. Note that cmtype=subcat or cmtype=file may be used instead of cmnamespace=14 or 6.

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

Values (separate with | or alternative): 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
To specify all values, use *.
cmtype

Which type of category members to include. Ignored when cmsort=timestamp is set.

Values (separate with | or alternative): file, page, subcat
Default: page|subcat|file
cmcontinue

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

cmlimit

The maximum number of pages to return.

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

Property to sort by.

One of the following values: sortkey, timestamp
Default: sortkey
cmdir

In which direction to sort.

One of the following values: asc, ascending, desc, descending, newer, older
Default: ascending
cmstart

Timestamp to start listing from. Can only be used with cmsort=timestamp.

Type: timestamp (allowed formats)
cmend

Timestamp to end listing at. Can only be used with cmsort=timestamp.

Type: timestamp (allowed formats)
cmstarthexsortkey

Sortkey to start listing from, as returned by cmprop=sortkey. Can only be used with cmsort=sortkey.

cmendhexsortkey

Sortkey to end listing at, as returned by cmprop=sortkey. Can only be used with cmsort=sortkey.

cmstartsortkeyprefix

Sortkey prefix to start listing from. Can only be used with cmsort=sortkey. Overrides cmstarthexsortkey.

cmendsortkeyprefix

Sortkey prefix to end listing before (not at; if this value occurs it will not be included!). Can only be used with cmsort=sortkey. Overrides cmendhexsortkey.

cmstartsortkey
Deprecated.

Use cmstarthexsortkey instead.

cmendsortkey
Deprecated.

Use cmendhexsortkey instead.

예시 1: 카테고리에서 페이지 20개 나열하기

GET 요청


응답

응답
{
	"api": {
		"query-continue": {
			"categorymembers": {
				"_cmcontinue": "subcat|44594e414d494353|10998823"
			}
		},
		"query": {
			"categorymembers": {
				"cm": [
					{
						"_pageid": "22688097",
						"_ns": "0",
						"_title": "Branches of physics"
					},
					{
						"_pageid": "3445246",
						"_ns": "0",
						"_title": "Glossary of classical physics"
					},
					{
						"_pageid": "24489",
						"_ns": "0",
						"_title": "Outline of physics"
					},
					...
				]
			}
		}
	}
}

샘플 코드

get_category_items.py

Python

#!/usr/bin/python3

"""
    get_category_items.py

    MediaWiki API Demos
    Demo of `Categorymembers` module : List twenty items in a category

    MIT License
"""

import requests

S = requests.Session()

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

PARAMS = {
    "action": "query",
    "cmtitle": "Category:Physics",
    "cmlimit": "20",
    "list": "categorymembers",
    "format": "json"
}

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

PAGES = DATA['query']['categorymembers']

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

PHP

<?php
/*
    get_category_items.php

    MediaWiki API Demos
    Demo of `Categorymembers` module : List twenty items in a category

    MIT License
*/

$endPoint = "https://en.wikipedia.org/w/api.php";
$params = [
    "action" => "query",
    "list" => "categorymembers",
    "cmtitle" => "Category:Physics",
    "cmlimit" => "20",
    "format" => "json"
];

$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"]["categorymembers"] as $pages ){
    echo( $pages["title"] . "\n" );
}

JavaScript

/*
    get_category_items.js

    MediaWiki API Demos
    Demo of `Categorymembers` module : List twenty items in a category

    MIT License
*/

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

var params = {
    action: "query",
    list: "categorymembers",
    cmtitle: "Category:Physics",
    cmlimit: "20",
    format: "json"
};

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 pages = response.query.categorymembers;
        for (var page in pages) {
            console.log(pages[page].title);
        }
    })
    .catch(function(error){console.log(error);});

MediaWiki JS

/*
	get_category_items.js

	MediaWiki API Demos
	Demo of `Categorymembers` module : List twenty items in a category

	MIT License
*/

var params = {
		action: 'query',
		list: 'categorymembers',
		cmtitle: 'Category:Physics',
		cmlimit: '20',
		format: 'json'
	},
	api = new mw.Api();

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

예시 2: 가장 최근에 카테고리에 추가된 문서 10개 가져오기

GET 요청


응답

응답
{
	"api": {
		"query-continue": {
			"categorymembers": {
				"_cmcontinue": "Magnetic levitation|"
			}
		},
		"query": {
			"categorymembers": {
				"cm": [
					{
						"_pageid": "1653925",
						"_ns": "100",
						"_title": "Portal:Physics"
					},
					{
						"_pageid": "22939",
						"_ns": "0",
						"_title": "Physics"
					},
					{
						"_pageid": "3445246",
						"_ns": "0",
						"_title": "Glossary of classical physics"
					},
					...
				]
			}
		}
	}
}

샘플 코드

get_recent_category_items.py


Python

#!/usr/bin/python3

"""
    get_recent_category_items.py

    MediaWiki API Demos
    Demo of `Categorymembers` module : Get the ten articles most recently added to a category

    MIT License
"""

import requests

S = requests.Session()

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

PARAMS = {
    "cmdir": "desc",
    "format": "json",
    "list": "categorymembers",
    "action": "query",
    "cmtitle": "Category:Physics",
    "cmsort": "timestamp"
}

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

PAGES = DATA["query"]["categorymembers"]

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

PHP

<?php
/*
    get_recent_category_items.php

    MediaWiki API Demos
    Demo of `Categorymembers` module : Get the ten articles most recently added to a category

    MIT License
*/

$endPoint = "https://en.wikipedia.org/w/api.php";
$params = [
    "action" => "query",
    "list" => "categorymembers",
    "cmtitle" => "Category:Physics",
    "cmsort" => "timestamp",
    "cmdir" => "desc",
    "format" => "json"
];

$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"]["categorymembers"] as $page ) {
    echo( $page["title"] . "\n" );
}

JavaScript

/*
    get_recent_category_items.js

    MediaWiki API Demos
    Demo of `Categorymembers` module : Get the ten articles most recently added to a category

    MIT License
*/

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

var params = {
    action: "query",
    list: "categorymembers",
    cmtitle: "Category:Physics",
    cmsort: "timestamp",
    cmdir: "desc",
    format: "json"
};

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 pages = response.query.categorymembers;
        for (var page in pages) {
            console.log(pages[page].title);
        }
    })
    .catch(function(error){console.log(error);});

MediaWiki JS

/*
	get_recent_category_items.js

	MediaWiki API Demos
	Demo of `Categorymembers` module : Get the ten articles most recently added to a category

	MIT License
*/

var params = {
		action: 'query',
		list: 'categorymembers',
		cmtitle: 'Category:Physics',
		cmsort: 'timestamp',
		cmdir: 'desc',
		format: 'json'
	},
	api = new mw.Api();

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

예시 3: 카테고리에 속하는 서브카테고리 10개 가져오기

GET 요청


응답

응답
{
	"api": {
		"query-continue": {
			"categorymembers": {
				"_cmcontinue": "subcat|57494b4950454449412050454f504c45|41491664"
			}
		},
		"query": {
			"categorymembers": {
				"cm": [
					{
						"_pageid": "1458692",
						"_ns": "14",
						"_title": "Category:Wikipedias by language"
					},
					{
						"_pageid": "22918730",
						"_ns": "14",
						"_title": "Category:Books about Wikipedia"
					},
					{
						"_pageid": "16957584",
						"_ns": "14",
						"_title": "Category:Critics of Wikipedia"
					},
					...
				]
			}
		}
	}
}

다음 하위 카테고리(10개 이상 존재하는 경우)는 위의 응답에 있는 cmcontinue 매개 변수를 이용하여 가져올 수 있습니다.

Sample code

get_subcategories.py


Python

#!/usr/bin/python3

"""
    get_subcategories.py

    MediaWiki API Demos
    Demo of `Categorymembers` module : Get ten subcategories of a category

    MIT License
"""

import requests

S = requests.Session()

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

PARAMS = {
    "action": "query",
    "cmtitle": "Category:Wikipedia",
    "cmtype": "subcat",
    "list": "categorymembers",
    "format": "json"
}

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

PAGES = DATA["query"]["categorymembers"]

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

PHP

<?php
/*
    get_subcategories.php

    MediaWiki API Demos
    Demo of `Categorymembers` module : Get ten subcategories of a category

    MIT License
*/

$endPoint = "https://en.wikipedia.org/w/api.php";
$params = [
    "action" => "query",
    "list" => "categorymembers",
    "cmtitle" => "Category:Wikipedia",
    "cmtype" => "subcat",
    "format" => "json"
];

$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"]["categorymembers"] as $cat ) {
    echo( $cat["title"] . "\n");
}

JavaScript

/*
    get_subcategories.js

    MediaWiki API Demos
    Demo of `Categorymembers` module : Get ten subcategories of a category

    MIT License
*/

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

var params = {
    action: "query",
    list: "categorymembers",
    cmtitle: "Category:Wikipedia",
    cmtype: "subcat",
    format: "json"
};

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 category = response.query.categorymembers;
        for (var cat in category) {
            console.log(category[cat].title);
        }
    })
    .catch(function(error){console.log(error);});

MediaWiki JS

/*
	get_subcategories.js

	MediaWiki API Demos
	Demo of `Categorymembers` module : Get ten subcategories of a category

	MIT License
*/

var params = {
		action: 'query',
		list: 'categorymembers',
		cmtitle: 'Category:Wikipedia',
		cmtype: 'subcat',
		format: 'json'
	},
	api = new mw.Api();

api.get( params ).done( function ( data ) {
	var category = data.query.categorymembers,
		cat;
	for ( cat in category ) {
		console.log( category[ cat ].title );
	}
} );

Possible errors

Code Info
cmnotitle The parameter cmtitle is required.
cminvalidcategory 입력한 분류 이름이 올바르지 않습니다.
cmbadcontinue Invalid continue param. You should pass the original value returned by the previous query.

Parameter history

  • v1.24: Deprecated cmstartsortkey, cmendsortkey
  • v1.18: Introduced cmstartsortkeyprefix, cmendsortkeyprefix
  • v1.17: Introduced sortkeyprefix, type
  • v1.14: Introduced cmstartsortkey, cmendsortkey
  • v1.12: Introduced cmtype,cmstart, cmend, cmdir

See also