You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

维基百科API查询需求及list、generator、search选型困惑

嘿,我来帮你理清这个维基百科API的查询问题!你要的是标题以"Avatar"开头、分类为"English language films"的条目,还要抓URL、标题、日期、摘要和主图对吧?之前用list=allpages没搞定很正常,因为它本身没法直接结合分类筛选,得搭配其他参数或者换用不同的query模块。下面我给你拆解三种可行的思路,包括你提到的allpages,以及另外两种更实用的方式,帮你精准拿到需要的数据:

方法1:用list=allpages + 分类验证(多轮请求)

allpages可以按标题前缀筛选,但没法直接限定分类,所以得先拿到所有标题以"Avatar"开头的页面,再逐个验证是否属于目标分类:

  1. 先获取前缀为"Avatar"的页面列表:
    https://en.wikipedia.org/w/api.php?action=query&list=allpages&apfrom=Avatar&aplimit=50&format=json
    
  2. 对每个页面的pageid,用prop=categories检查是否包含目标分类:
    https://en.wikipedia.org/w/api.php?action=query&prop=categories&pageids=【替换为实际pageid】&clcategories=Category:English language films&format=json
    
  3. 最后对符合条件的页面,请求完整字段:
    https://en.wikipedia.org/w/api.php?action=query&pageids=【替换为实际pageid】&prop=info|extracts|pageimages&inprop=url|modified&exintro=1&explaintext=1&pithumbsize=300&format=json
    

缺点:需要多轮请求,效率低,且aplimit有上限,处理大量数据时很麻烦。

方法2:用list=search + 分类限定(文本搜索结合)

维基百科的search模块支持用搜索语法同时限定标题前缀和分类,直接命中符合条件的页面:

  1. 先搜索符合条件的页面列表:
    https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=intitle:Avatar incategory:"English language films"&srlimit=50&srprop=timestamp|snippet&format=json
    
  2. 拿到每个结果的pageid后,再请求完整的URL、摘要和主图(同方法1的第三步请求)。
    优点:一步拿到符合条件的页面列表;缺点:搜索结果排序不一定严格按标题前缀,且返回的snippet不是完整摘要,需要二次请求补全。
方法3:用generator=categorymembers + 标题前缀过滤(最优解)

这是最高效的方式,直接从目标分类里筛选标题以"Avatar"开头的页面,一次请求就能拿到所有需要的字段:

https://en.wikipedia.org/w/api.php?action=query&generator=categorymembers&gcmtitle=Category:English language films&gcmtitleprefix=Avatar&gcmlimit=50&prop=info|extracts|pageimages&inprop=url|modified&exintro=1&explaintext=1&pithumbsize=300&format=json

参数解释:

  • generator=categorymembers:以分类成员作为生成器,直接获取分类下的页面
  • gcmtitleprefix=Avatar:筛选标题以"Avatar"开头的页面
  • prop=info|extracts|pageimages:同时获取页面信息(URL、修改日期)、纯文本摘要、主图缩略图
  • exintro=1&explaintext=1:只返回正文开头的摘要,且为纯文本格式
  • pithumbsize=300:指定主图缩略图的尺寸

这个请求返回的每个条目里,你需要的字段都齐全:title(标题)、fullurl(页面URL)、touched(修改日期)、extract(摘要)、thumbnail(主图地址)。如果结果超过50条,用gcmcontinue参数分页即可。

你之前可能没把generator和categorymembers结合起来用,这才是完全匹配你需求的最优方案——不需要多轮请求,一次就能搞定所有数据。

内容的提问来源于stack exchange,提问作者Le Mot Juiced

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:51:35