wikipedia-api - 使用 Wikimedia API 检索 Wikipedia 页面的 Wikimedia Commons Category
问题描述
我正在尝试使用 Wikimedia Api 将相应的 Wikimedia Commons 类别获取到特定的 Wikipedia 页面。我认为这是可能的,因为大多数 Wikipedia 页面都包含“在其他项目中” - 侧边栏中的部分,其中包含重定向到 Commons 类别的链接(例如:https ://de.wikipedia.org/wiki/Albert_Einstein )
提前致谢。
解决方案
您可以通过两次 API 调用来实现,第一次调用德语 Wikipedia 可以获得 Wikidata Qid:
返回:
{
"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
返回:
{
"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 中的值是类别的名称。您只需在前面加上完整的 URLhttps://commons.wikimedia.org/wiki/Category:
推荐阅读
- symfony - Symfony @Assert\Type("string") 验证通过整数值
- junit - 已检查的异常对此方法无效!Junit5 JMSException 测试失败
- css - 有没有更好的方法将此背景图像与其上方的文本对齐?
- python - 将json文件转换为toml文件
- python - 在重定向烧瓶中传递数组/列表作为参数
- ios - 将用户输入的信息传递给 View 并用它创建一个新的类似小部件的卡片
- firebase - 带有 Okta 身份提供程序 (IdP) 的 Google Cloud Storage
- python - 用循环替换字符串中的单词
- python - 根据条件创建新列会出错
- asp.net-core - Blazor 中的项目,控制器无法正常工作并且程序文件错误很多