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

Bob*_*obR 4 redirect wikipedia-api mediawiki-api

MediaWiki API:Query 页面看来,您一次只能解析一个重定向。

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

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

svi*_*ick 5

如果您有任何返回pages 的结果,那么您可以附加redirects到查询并解析重定向。如果没有返回pages 的结果,通常可以使用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>
Run Code Online (Sandbox Code Playgroud)

如果你把它转换成发电机

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>
Run Code Online (Sandbox Code Playgroud)

如果你现在添加 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>
Run Code Online (Sandbox Code Playgroud)