Подтвердить что ты не робот

Поддерживает ли API Википедии поиск определенного шаблона?

Можно ли запросить API Википедии для статей, содержащих определенный шаблон? Документация не описывает никаких действий, которые будут фильтровать результаты поиска на страницах, содержащих шаблон. В частности, я просматриваю страницы, содержащие Template:Persondata. После этого я надеюсь получить этот конкретный шаблон, чтобы заполнить данные генеалогии для проекта openancestry.org.

В приведенном ниже примере показано, что страница Albert Einstein содержит шаблон Persondata, но не возвращает содержимое шаблона, и я не знаю, как получить список названий страниц, содержащих шаблон. http://en.wikipedia.org/w/api.php?action=query&prop=templates&titles=Albert%20Einstein&tlcontinue=736|10|ParmPart

Возврат:

<api>
 <query>
  <pages>
   <page pageid="736" ns="0" title="Albert Einstein">
    <templates>
     ...
     <tl ns="10" title="Template:Persondata"/>
     ...
    </templates>
   </page>
  </pages>
 </query>
 <query-continue>
  <templates tlcontinue="736|10|Reflist"/>
 </query-continue>
</api>

Я подозреваю, что я не могу получить то, что мне нужно от API, но я надеюсь, что я ошибаюсь и что кто-то уже пробил путь по этому пути.

4b9b3361

Ответ 1

Вы можете использовать запрос embeddedin для поиска всех страниц, содержащих шаблон:

curl 'http://en.wikipedia.org/w/api.php?action=query&list=embeddedin&eititle=Template:Persondata&eilimit=5&format=xml'

Что вам нужно:

<?xml version="1.0"?>
<api>
  <query>
    <embeddedin>
      <ei pageid="307" ns="0" title="Abraham Lincoln" />
      <ei pageid="308" ns="0" title="Aristotle" />
      <ei pageid="339" ns="0" title="Ayn Rand" />
      <ei pageid="340" ns="0" title="Alain Connes" />
      <ei pageid="344" ns="0" title="Allan Dwan" />
    </embeddedin>
  </query>
  <query-continue>
    <embeddedin eicontinue="10|Persondata|595" />
  </query-continue>
</api>

Смотрите полные документы на mediawiki.org.

Изменить Используйте embeddedin запрос вместо backlinks (который не включает включения шаблонов)

Ответ 2

Использование embeddedin не позволяет вам искать конкретного человека, строка поиска становится Template:Persondata.

Лучший способ найти только людей из Википедии - использовать list=search и отфильтровать поиск, используя AND"Born"AND"Occupation":

http://en.wikipedia.org/w/api.php?action=query&list=search&srsearch="Tom Cruise"AND"Born"AND"Occupation"&format=jsonfm&srprop=snippet&srlimit=50`

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