【问题标题】:Find main category for article using Wikipedia API使用 Wikipedia API 查找文章的主要类别
【发布时间】:2014-08-29 18:03:57
【问题描述】:

我有一个文章列表,我想找到每篇文章的主要类别。

维基百科在这里列出了它的主要类别 - http://en.wikipedia.org/wiki/Portal:Contents/Categories

我可以使用以下方法找到每篇文章的子类别:

http://en.wikipedia.org/w/api.php?action=query&prop=categories&titles=%s&format=xml

我还可以检查一个子类别是否在一个类别中:

http://en.wikipedia.org/w/api.php?action=query&titles=Dog&prop=categories&clcategories=Domesticated animals&format=xml

这将告诉我“驯养动物”是否是狗的子类别,但这并不是我想要的。我希望能够检查“驯养动物”属于哪个主要类别。这可以使用 API 吗?

【问题讨论】:

  • 您所指的页面是手动策划的,在技术上不是“主要类别”。这更接近:en.wikipedia.org/wiki/Category:Main_topic_classifications 但从技术上讲,它也不是最上面的类别(它被放置在内容类别中)。
  • 但是,如果您想了解家养动物属于哪些类别,请使用:en.wikipedia.org/w/… 如您所见,它属于三个类别。您可以对它们中的每一个重复该 API 调用并“爬上”类别分类。
  • @Ainali 非常感谢!我会试试那个方法。

标签: php mediawiki wikipedia wikipedia-api


【解决方案1】:

首先,没有“维基百科 API”之类的东西。有一个 MediaWiki (web) API。了解这一点将帮助您找到有关现有工具的信息。 https://www.mediawiki.org/wiki/API:Main_Page

这告诉您没有 API 可以为您执行所有类别递归。为什么?因为 1)它的效率极低,2)递归可能会去任何地方或永远不会结束。

但是现在有一个解决方案,作者 Magnus Manske:https://tools.wmflabs.org/catscan2/reverse_tree.php?doit=1&language=en&project=wikipedia&title=Dog&namespace=0“最大深度:61 级沿途的总类别:7988” 使用该定义,[[Dog]] 的“根”类别,即最远的父亲类别,是“按国家/地区划分的行业”。可能不是你所期望的!但是,从英文维基百科的角度来看,任何文章的根类别始终相同,[[Category:Contents]]。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多