Возврат текста из статьи через MediaWiki API?

Я пытаюсь написать программу на JavaScript, где пользователь вводит что-то в строку поиска, и программа возвращает 3 лучших результата Википедии и краткое описание каждого. Я могу успешно получить результат поиска и вернуть заголовки со следующим синтаксисом:

 articles1.append(x.query.search[0].title);

Однако, хотя сайт MediaWiki (https://www.mediawiki.org/wiki/API:Parsing_wikitext) приводит меня к мысли, что «текст» можно использовать как параметр, аналогичный «названию», следующее ничего не возвращает:

 articles1.append(x.query.search[0].text);

То же самое касается «резюме» или любых других перечисленных параметров. Я чувствую, что могу в корне неправильно понимать, как должны работать эти параметры, но, поскольку я могу, по крайней мере, успешно получить запрошенные заголовки, я чувствую, что не могу быть слишком далеко. Любая помощь приветствуется, полный код ниже:

HTML:

<input type="text" value='' id=test >
<button>Search</button>

<section class='articles1'>
1.
</section>
<section class='articles2'>
2.
</section>
<section class='articles3'>
3.
</section>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

JavaScript:

$(document).ready(function() {
    var articles1 = $('.articles1');
    var articles2 = $('.articles2');
    var articles3 = $('.articles3');
    var input = $( 'input' );
    var button = $( 'button' );
    var toSearch = '';
    var searchUrl = 'https://en.wikipedia.org/w/api.php';

    $("button").click( function(e) {
        var search = document.getElementById("test").value;
        $.ajax({
            url: 'http://en.wikipedia.org/w/api.php',
            data: { action: 'query', list: 'search', srsearch: search, format: 'json' },
            dataType: 'jsonp',
            success: function( x ) {
                articles1.append( x.query.search[0].title );
                articles2.append( x.query.search[1].title );
                articles3.append( x.query.search[2].title );
            }
        })
    })
})

person eversomber    schedule 03.05.2016    source источник
comment
В функции успеха вашего запроса ajax попробуйте вывести x на консоль. Это позволит вам исследовать форму объекта, которая должна точно сказать вам, что доступно и как получить к нему доступ.   -  person Shane Cavaliere    schedule 03.05.2016


Ответы (1)


Страница Анализ WikiText, на которую вы ссылаетесь, объясняет, как анализировать произвольный WikiText. Здесь это не актуально.

Вы используете API поиска и можете использовать только возвращенные свойства этого модуля. В этом случае вы можете искать свойство snippet:

articles1.append( x.query.search[0].snippet );

Дополнительные параметры см. в документации по Search API.


P.S. вы также можете использовать песочницу API MediaWiki, чтобы поиграть и протестировать запросы API.

person Dror S.    schedule 09.05.2016