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

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

4b9b3361

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