API Википедии: как получить несколько заголовков и разрешить перенаправления в 1 вызове? - PullRequest
3 голосов
/ 16 января 2012

На странице MediaWiki API: Query * указывается, что вы можете разрешить только перенаправление по одному за раз.

В документе даже сказано "Пример ниже не очень полезен, потому чтоон не использует какие-либо модули запросов, но показывает, как работает параметр перенаправления. "

Но как получить информацию о перенаправлении - используя модуль запросов, который возвращает , возвращает несколько результатов?

Ответы [ 2 ]

4 голосов
/ 16 января 2012

Если у вас есть какой-либо результат, который возвращает page с, то вы можете просто добавить redirects к запросу, и он разрешит перенаправления. Если у вас нет результатов, которые возвращают page с, вы обычно можете конвертировать их в результаты с помощью генератора .

Например, запрос

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 голос
/ 06 июля 2015

Вы также можете использовать prop=redirects с любым генератором, например, generator=allpages. Это новая функция с MW-1.23, исправляющая ошибку T59057 .

При использовании generator=allpages с максимальными пределами (gaplimit=max и rdlimit=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

...