2012-03-23 2 views
3

Я хотел бы использовать wikipedia API, чтобы вернуть выписку из нескольких статей в Википедии сразу. Я пытаюсь, например, следующий запрос (я просто выбрал pageids случайным образом):prop = extracts не возвращает все выдержки в API WikiMedia

http://en.wikipedia.org/w/api.php?format=xml&action=query&pageids=3258248|11524059&prop=extracts&exsentences=1

Но он содержит только экстракт для первого PageId, а не второй. Другие свойства, похоже, не имеют этого ограничения. Например

http://en.wikipedia.org/w/api.php?format=xml&action=query&pageids=3258248|11524059&prop=categories

будет возвращать категории для обоих pageids. Это ошибка, или я чего-то не хватает?

ответ

10

Обратите внимание, что элемент <query-continue>. Он говорит вам, что, чтобы получить больше экстрактов, вам необходимо указать excontinue=1:

http://en.wikipedia.org/w/api.php?format=xml&action=query&pageids=3258248|11524059&prop=extracts&exsentences=1&excontinue=1

Вы должны быть в состоянии получить их обоих, указав exlimit=max:

http://en.wikipedia.org/w/api.php?format=xml&action=query&pageids=3258248|11524059&prop=extracts&exsentences=1&exlimit=max

Но это, кажется, не работает правильно, я не уверен, почему.

BTW, категории имеют аналогичные ограничения, поэтому ваш запрос категории также имеет <query-continue> и почему он не перечисляет все категории статей.

+3

Ах, спасибо, что указали мне на «exlimit = max» - это оказалось ключом - ОДНАКО, по какой-то причине я не понимаю, мне также пришлось установить «exintro». Комбинация этих двух заставила его извлечь все выдержки. Оглядываясь на какое-то время, я не думаю, что 'excontinue' является логической переменной, я думаю, что это более сложная многостраничная сделка, поэтому я просто оставил ее пустой. Итак, мой весь запрос: 'http: //en.wikipedia.org/w/api.php? Format = xml & action = query & pageids = 11524059 | 3258248 & prop = extracts & exlimit = max & explaintext & exintro' –

+1

Да,' excontinue' - это просто ценность, которую вы можете используйте на следующей странице, это не имеет другого значения. И теперь я понимаю предел, [документация на mediawiki.org] (https://www.mediawiki.org/wiki/Extension:MobileFrontend#prop.3Dextracts) говорит: «Поскольку генерация отрывков может быть медленной, ограничение ограничено на 20 для интро-единственных выписок и 1 для выписок из всей страницы. " – svick

+0

Этот ответ больше не работает. Я все еще сталкиваюсь с той же проблемой, но API не распознает 'eslimit = max'. – user666

Смежные вопросы