Поддерживает ли API Википедии поиск определенного шаблона?
Можно ли запросить API Википедии для статей, которые содержат определенный шаблон? Документация не описывает никаких действий, которые бы фильтровали результаты поиска на страницах, содержащих шаблон. В частности, я после страниц, которые содержат Template:Persondata
, После этого я надеюсь, что смогу получить именно этот конкретный шаблон, чтобы заполнить генеалогические данные для проекта http://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 ответа
Вы можете использовать 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
(который не охватывает включения шаблона)
С помощью 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`
Помните, что Википедия использует поисковую систему, которая пока не позволяет нам искать только заголовок, она будет искать полный текст. Вы можете воспользоваться этим, чтобы получить более точные результаты.
В принятом ответе объясняется, как составить список страниц с использованием определенного шаблона, но если вам нужно выполнить поиск страниц с использованием шаблона, вы можете с помощью hastemplate:
ключевое слово для поиска: https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=hastemplate:NPOV%20physics