能否在WikiData的API中使用generator获取维基百科分类下页面字段
报错根因
各维基媒体独立站点的页面ID体系完全隔离,你使用的1810130是波兰语维基百科的专属分类页ID,不存在于Wikidata的页面体系中。此外Wikidata的内容关联逻辑与普通语言版维基百科的Category分类体系不同,无法直接使用categorymembers生成器调用Wikidata接口获取对应分类下的内容。
解决方案
无需分开请求两个站点的接口,可直接在波兰语维基百科的API请求中附加Wikidata实体属性查询参数,单次请求即可同时拿到分类下页面列表和所需结构化字段。
需在原有请求参数基础上新增以下配置:
- 新增
prop字段,取值为wbentityclaims,用于拉取页面对应Wikidata实体的属性声明 - 新增
wbclaimsproperty字段,指定需要查询的Wikidata属性ID,例如出生日期对应的属性ID为P569,需查询多个属性时用|分隔即可
调整后的请求参数示例:
query.params = { "action": "query", "generator": "categorymembers", "gcmpageid": 1810130, "gcmlimit": "max", "prop": "wbentityclaims", "wbprop": "claims", "wbclaimsproperty": "P569", "format": "json" }
返回结果中每个页面对象下的wbentityclaims字段即为对应Wikidata属性的取值,可直接提取使用。如果需要递归获取子分类下的页面,新增gcmtype=page|subcat参数后自行处理子分类的递归查询即可。
内容的提问来源于stack exchange,提问作者adamgorszy
相关产品推荐
相关产品推荐

