У меня есть решение (с помощью нескольких запросов).
От человека странице (http://your_wiki.fr/api.php):
list=allcategories
возвращает все категории вики;
prop=categoryinfo
возвращает информацию о категории, включая количество подкатегорий.
Сначала нам нужно выбрать категорию «корень», где начинается дерево. Я в моем случае, это «История».
Затем с помощью генератора, мы можем иметь, для данной категории:
- все свои подкатегории,
- количество подкатегорий в каждой подкатегории.
Здесь с игрой престолов викия:
http://gameofthrones.wikia.com/api.php?action=query&generator=categorymembers&gcmtitle=Category:Story&gcmtype=subcat&gcmlimit=500&prop=categoryinfo
Ну, теперь мы просто нужно закодировать функцию, которая возвращает подкатегории категории, рекурсивно, пока там нет суб категория:
Первый результат запроса выше:
<page pageid="2545" ns="14" title="Category:Characters" touched="2016-06-02T14:20:11Z" lastrevid="92826" counter="" length="67">
<categoryinfo size="953" pages="935" files="2" subcats="16" />
</page>
So subcats> 0? ОК, так что позволяет задать для символов подкатегорий:
http://gameofthrones.wikia.com/api.php?action=query&generator=categorymembers&gcmtitle=Category:Characters&gcmtype=subcat&gcmlimit=500&prop=categoryinfo|info
и т.д.