Поддерживает ли API Википедии поиск определенного шаблона? - PullRequest
12 голосов
/ 28 октября 2010

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

Приведенный ниже запрос показывает, что страница Альберта Эйнштейна содержит шаблон 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, но я надеюсь, что я ошибаюсь, и что кто-то уже проложил путь по этому пути.

Ответы [ 3 ]

7 голосов
/ 08 ноября 2010

Вы можете использовать запрос 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 (который не охватывает включения в шаблон)

3 голосов
/ 30 мая 2014

Использование 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`

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

0 голосов
/ 28 декабря 2016

В принятом ответе объясняется, как составить список страниц с использованием определенного шаблона, но если вам нужно выполнить поиск для страниц, использующих шаблон, вы можете использовать ключевое слово поиска hastemplate:: https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=hastemplate:NPOV%20physics

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...