2014-11-30 3 views
1

하위 카테고리에 대한 카테고리 정보 (페이지 및 하위 세트 수)를 특정 카테고리에 표시하는 xml/json을 생성하고 싶습니다. 위키 백과. 이를 위해서는 카테고리> 하위 카테고리 목록> 하위 하위 카테고리 목록> 하위 하위 카테고리별로 기사 수를 표시하는 것과 같이 데이터 계층 구조에서 2 개의 레벨을 통해 구문 분석해야합니다. ,MediaWiki API를 사용하여 하위 하위 카테고리의 기사 수를 얻는 방법

http://en.wikipedia.org/w/api.php?action=query&format=json&generator=categorymembers&gcmtitle=Category:People_by_nationality_and_occupation&gcmlimit=30&gcmprop=ids|title&prop=categoryinfo&continue=

여기 나에게 하위 하위 범주의 사전을 제공합니다 내가 실행 해요 스크립트가있다 : 위키 피 디아의 API를 사용하여

이 내가 하위 범주의 한 단계 무엇을 찾고 있어요 나를 준다 하지만 나는 페이지 수 (categoryinfo)를 표시 할 수 없습니다. 이 문제를 어떻게 해결할 수 있습니까? 이 위키 백과 같은 위키 미디어 프로젝트의 경우

from wikitools import wiki, category, api 

def get_category_members (category_name, depth, lang='en'): 

articles = {} 
if depth < 0: 
    return articles 

#Begin crawling articles in category 
results = wikipedia_query({'list':'categorymembers', 
           'cmtitle': category_name, 
           'cmtype' : 'subcat', 
           'cmlimit': '300', 
           'action' : 'query', 
           'prop' : 'categoryinfo'}, lang) 
return results 
if 'categorymembers' in results.keys() and len(results['categorymembers']) > 0: 
    for i, page in enumerate(results['categorymembers']): 
     article = {page['title'] : 'categoryinfo'} 
     articles.update(article) 
    return articles 
+1

범주를 반복해야합니다 , 그리고 카운트합니다. 부모를 포함하는 카테고리이므로 무한 루프를 피할 수있는 메커니즘이 있는지 확인하십시오. – leo

+0

@leo 하위 하위 범주 사전을 반복하는 스크립트를 추가했지만 어떻게 페이지 수를 값으로 표시 할 수 있습니까? –

+0

모두'categoryinfo'에 있어야합니다 :'{ "size": 16, "pages": 0, "files": 0, "subcats": 16}은 총 0 페이지, 0 파일, 16 하위 범주를 의미합니다. 16 개체 중. 그냥 페이지 수 (그리고 파일들도 원한다면) – leo

답변

1

, 그것은 (code logic를 참조하십시오.

을 최대한 멀리 볼 수 catscan처럼, 마그누스 맨 스케의 카테고리 재귀 도구에 의존하는 것이 더 쉬울 것입니다, 당신의 코드는 '아무튼 Wiki 객체 나 APIRequest를 만들지 않으며 반복적으로 하위 범주를 반복하지 않습니다. 하위 범주에서 재귀 적으로는 사용하지 않고 범주 멤버에 대한 자세한 정보를 추출하는 예제는 categorymembers as generator입니다.