如何通过维基词典API获取特定语言名词列表与斯拉夫语单词变格表?
问题
我需要获取以下两项内容:
- 特定语言的名词列表
- 斯拉夫语系中某一单词的变格表
原本计划通过这类HTTP GET请求实现:
- 获取名词列表的请求示例:
https://cs.wiktionary.org/wiki/wordlist/nouns - 获取变格表的请求示例:
https://cs.wiktionary.org/wiki/program/declension
期望变格表返回如下JSON格式的响应:
{ "word":"program", "singular_declension": { "nominative":"program", "genitive":"programu", "dative":"programu", "accusative":"program", "vocative":"programe", "locative":"programu", "instrumental":"programem" }, "plural_declension": { "nominative":"programy", "genitive":"programů", "dative":"programům", "accusative":"programy", "vocative":"programy", "locative":"programech", "instrumental":"programy" } }
但我在维基官方API文档中未找到对应的接口,请问该如何实现需求?是否只能通过网页抓取从HTML页面提取信息?
解决方案
一、获取斯拉夫语系单词变格表
维基词典的MediaWiki API没有直接返回结构化变格数据的接口,但可以通过以下两种更可靠的方式替代纯HTML抓取:
- 利用Wikibase实体数据
部分维基词典条目会将词形变化数据存储在Wikibase实体中,调用wbgetentities接口并指定props=claims,可获取条目关联的语法属性数据,再自行解析为你需要的JSON格式。 - 解析页面的Wikitext源码
通过action=parse接口获取条目的Wikitext源码(而非渲染后的HTML),维基词典的变格表通常由特定模板生成(比如捷克语的sklonování模板),解析这些模板的参数即可提取结构化的变格信息,这种方式比解析HTML更稳定、不易受页面样式变更影响。
二、获取特定语言的名词列表
维基词典的单词列表页面属于用户维护集合,没有专门API返回结构化列表,但可通过以下方式获取:
- 解析列表页面的Wikitext
使用action=parse接口获取目标列表页面的Wikitext,里面的名词通常以模板或标准列表语法组织,解析成本远低于HTML。 - 利用分类系统批量获取
维基词典会将同一语言的名词归类到对应分类下,通过action=query接口的list=categorymembers参数,可批量获取分类下的所有名词条目,这种方式得到的列表更系统、权威,比依赖用户维护的wordlist更可靠。
总结
不需要依赖纯HTML抓取,解析Wikitext或利用Wikibase数据的方式,能更稳定地获取结构化信息,且维护成本更低。
内容的提问来源于stack exchange,提问作者Val
相关产品推荐
相关产品推荐

