我想生成一个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/