2014-09-17 5 views
11

Я искал способ, чтобы выполнить запрос на википедии апи, основанный на строке поиска для списка статей со следующими свойствами:Wikipedia поиск апи полнотекстового вернуть статьи с заголовком, фрагмент кода и изображение

  • Название
  • Snippet/Описание
  • Одно или несколько изображений, связанных со статьей.

Мне также нужно сделать запрос, используя jsonp.

Я попытался с помощью списка = параметр поиска

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

Но, кажется, игнорировать гребного винта = изображения, я также попытался изменения с помощью пропеллера = ImageInfo и проп = pageimages. Но все они дают мне тот же результат, что и использование списка = search.

Я также попытался действие = OpenSearch

http://en.wikipedia.org/w/api.php?action=opensearch&search=test&limit=10&format=xml

Что дает мне именно то, что я хочу, когда я установить формат = XML, но возвращает простой массив заголовков страниц при использовании формата = JSON и, следовательно, из-за требования jsonp.

Есть ли другой подход к этому? Я бы очень хотел решить это по одному запросу, а не сделать первый запрос на поиск, а затем второй запрос для изображений с использованием заголовков = x | y | z

+0

Вы не можете использовать запрос 'list' и' prop'. – Bergi

+0

Итак, нет способа сделать это в одном запросе? Похоже на довольно стандартный запрос. – srosengren

ответ

17

Как предложил Берги, использование генераторов - это путь сюда.В частности то, что я хотел бы сделать:

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

+0

Спасибо, это также решило новое требование, которое я получил, предоставив мне свойство для управления длиной фрагмента/выписки. – srosengren

+0

+1, я забыл про 'extracts'! – Bergi

1

Я пробовал использовать список = поиск параметр, но, кажется, игнорирует пропеллер = изображения

Если вы хотите получить какой-либо 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 property, это, скорее всего, даст вам наилучшие результаты.