维基百科API:如何检索多个标题并解决1次调用中的重定向?

时间:2012-01-16 05:31:27

标签: redirect wikipedia-api mediawiki-api

MediaWiki API:Query page看来,您一次只能解决重定向问题。

该文档甚至说“下面的示例并不真正有用,因为它不使用任何查询模块,但显示重定向参数的工作原理。”

但是如何获得重定向信息 - 使用 返回多个结果的查询模块?

2 个答案:

答案 0 :(得分:4)

如果您有任何返回page的结果,那么您只需将redirects附加到查询中即可解析重定向。如果您没有返回page的结果,通常可以使用generator将其转换为该结果。

例如,查询

http://en.wikipedia.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Redirects_from_gender&redirects

返回类似(缩短)的内容

<api>
  <query>
    <categorymembers>
      <cm pageid="648" ns="0" title="Actress" />
      <cm pageid="19887132" ns="0" title="Administratrix" />
    </categorymembers>
  </query>
</api>

如果将其转换为生成器

http://en.wikipedia.org/w/api.php?action=query&generator=categorymembers&gcmtitle=Category:Redirects_from_gender

你得到了

<api>
  <query>
    <pages>
      <page pageid="648" ns="0" title="Actress" />
      <page pageid="19887132" ns="0" title="Administratrix" />
    </pages>
  </query>
</api>

如果您现在添加redirects

http://en.wikipedia.org/w/api.php?action=query&generator=categorymembers&gcmtitle=Category:Redirects_from_gender&redirects

你得到了

<api>
  <query>
    <redirects>
      <r from="Actress" to="Actor" />
      <r from="Administratrix" to="Administrator (law)" />
    </redirects>
    <pages>
      <page pageid="21504235" ns="0" title="Actor" />
      <page pageid="6676496" ns="0" title="Administrator (law)" />
    </pages>
  </query>
</api>

答案 1 :(得分:1)

您还可以将prop=redirects与任何生成器一起使用,例如generator=allpages。这是自MW-1.23以来的一项新功能,修复了bug T59057

使用generator=allpages的最大限制(gaplimit=maxrdlimit=max)并且apihighlimits权限可用时,ArchWiki上的所有重定向都会在单个查询中解析;)
https://wiki.archlinux.org/api.php?action=query&generator=allpages&gapfilterredir=nonredirects&gaplimit=max&prop=redirects&rdprop=pageid|title|fragment&rdlimit=max