Wikipedia api fulltext search для возврата статей с заголовком, фрагментом и изображением
Я искал способ запросить wikipedia api на основе строки поиска для списка статей со следующими свойствами:
- Название
- Отрывок/Описание
- Одно или несколько изображений, связанных с этой статьей.
Мне также нужно сделать запрос с помощью jsonp.
Я попытался использовать параметр list = search
http://en.wikipedia.org/w/api.php?action=query&list=search&prop=images&format=json&srsearch=test&srnamespace=0&srprop=snippet&srlimit=10&imlimit=1
Но он, кажется, игнорирует prop = изображения, я также пробовал варианты с использованием prop = imageinfo и prop = pageimages. Но все они дают мне тот же результат, что и использование списка = поиск.
Я также попробовал action = opensearch
http://en.wikipedia.org/w/api.php?action=opensearch&search=test&limit=10&format=xml
Что дает мне именно то, что я хочу, когда я устанавливаю формат = xml, но возвращает простой массив заголовков страниц при использовании format = json и поэтому терпит неудачу из-за требования jsonp.
Есть ли другой подход к этому? Я бы очень хотел решить это по одному запросу, а не сделать первый запрос на поиск, а затем второй запрос для изображений с использованием заголовков = x | y | z
Ответы
Ответ 1
Как предложил Берги, использование генераторов - это путь сюда. В частности, что я буду делать:
- используйте
list=search
в качестве генератора, чтобы получить список статей
- используйте
prop=pageimages
, чтобы получить репрезентативное изображение для каждой статьи.
- используйте
prop=extracts
, чтобы получить описание для каждой статьи.
Весь запрос может выглядеть так:
http://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrsearch=test&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max
Ответ 2
Я пробовал использовать параметр list = search, но он, кажется, игнорирует prop = images
Если вы хотите получить любой properties, вам нужно указать список страниц, для которых вы хотите их получить; например используя параметры titles=
, pageids=
или revids=
. Вы не отправили, так что вы не получили результат для prop=images
.
Если вы использовали api.php?action=query&list=search&srsearch=test&prop=images&titles=test
, вы получили результаты поиска для test
и изображений страницы test
.
Однако вы также можете использовать коллекцию, которую генерирует запрос list
для вашего запроса свойства, используя модуль list
как generator. Запрос будет выглядеть так:
api.php?action=query&generator=search&gsrsearch=test&gsrnamespace=0&gsrprop=snippet&prop=images
. К сожалению, он не дает атрибутов, содержащихся в списке, но использует только страницы для базового запроса свойства.
Использование двух запросов - это, вероятно, путь. Кстати, я бы рекомендовал использовать свойство pageimages
, это, скорее всего, даст вам наилучшие результаты.