我想生成一个xml / json,它显示维基百科中特定类别中所有子子类别的类别信息(页数和子类的数量)。这需要我在数据层次结构中解析2个级别,如类别&gt;子类别列表&gt; <子子类别列表>显示每个子子类别的文章数量。
使用维基百科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
答案 0 :(得分:1)
如果这是针对维基百科的维基媒体项目,可能更容易依赖Magnus Manske的类别递归工具,例如catscan(参见code logic。
据我所知,您的代码不会创建Wiki对象,也不会创建APIRequest,也不会递归地迭代子类别。请参阅我使用categorymembers as generator提取有关类别成员的更多信息的示例(但不是在子类别中递归)。