我想生成一个xml / json,以显示Wikipedia中特定类别中所有子类别的类别信息(页面和子猫的数量)。这需要我解析数据层次结构中的2个级别,如类别>子类别列表>子子类别列表>显示每个子子类别的文章数。

使用Wikipedia 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=

这是我正在运行的脚本,该脚本为我提供了子子类别的字典,但我无法显示页面计数(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

最佳答案

如果这是针对像Wikipedia这样的Wikimedia项目,则依靠Magnus Manske的类别递归工具(例如catscan)(参见code logic)可能会更容易。

据我所知,您的代码没有创建Wiki对象,APIRequest,也没有递归地在子类别中进行迭代。看到一个示例,其中我使用categorymembers as generator提取了有关类别成员的更多信息(尽管不是在子类别中递归)。

关于python - 如何使用MediaWiki API获取子类别中的文章计数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27209071/

10-14 18:55
查看更多