首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Wikimedia API检索Wikipedia页面的Wikimedia Commons类别

使用Wikimedia API检索Wikipedia页面的Wikimedia Commons类别
EN

Stack Overflow用户
提问于 2021-09-26 16:59:21
回答 1查看 44关注 0票数 0

我正在尝试使用Wikimedia Api将相应的Wikimedia Commons类别获取到特定的Wikipedia页面。我假设这是可能的,因为大多数维基百科页面都包括“在其他项目中”-侧栏中的部分,它有一个重定向到Commons类别的链接(例如:https://de.wikipedia.org/wiki/Albert_Einstein)

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-26 21:20:08

您可以在两个API调用中完成此操作,第一个调用德语Wikipedia将获取Wikidata Qid:

https://de.wikipedia.org/w/api.php?action=query&format=json&prop=wbentityusage&titles=Albert%20Einstein&wbeuprop=&wbeuaspect=

它返回:

代码语言:javascript
复制
{
    "batchcomplete": "",
    "query": {
        "pages": {
            "1278360": {
                "pageid": 1278360,
                "ns": 0,
                "title": "Albert Einstein",
                "wbentityusage": {
                    "Q937": {
                        "aspects": [
                            "S",
                            "T",
                            "C.P227",
                            "C.P214",
                            "C.P244"
                        ]
                    }
                }
            }
        }
    }
}

然后,您可以使用Wikidata API来获取Commons类别的名称:https://www.wikidata.org/w/api.php?action=wbgetclaims&format=json&entity=Q937&property=P373

它返回:

代码语言:javascript
复制
{
    "claims": {
        "P373": [
            {
                "mainsnak": {
                    "snaktype": "value",
                    "property": "P373",
                    "hash": "be154a8a3dfc826844ceb5a62389857a65ff1e4e",
                    "datavalue": {
                        "value": "Albert Einstein",
                        "type": "string"
                    },
                    "datatype": "string"
                },
                "type": "statement",
                "id": "q937$2F332903-133D-4CA0-AD24-8B4292C2BF89",
                "rank": "normal"
            }
        ]
    }
}

datavalue中的值是类别的名称。只需添加https://commons.wikimedia.org/wiki/Category:即可获得完整的URL

https://commons.wikimedia.org/wiki/Category:Albert Einstein

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69337073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档