通过MediaWiki API从文章中返回文本?

时间:2016-05-03 18:11:52

标签: javascript json mediawiki mediawiki-api

我试图用JavaScript编写程序,用户在搜索栏中输入内容,程序返回前3个维基百科结果和每个结果的简短描述。我可以成功获取搜索结果并使用以下语法返回标题:

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

然而,虽然MediaWiki网站(https://www.mediawiki.org/wiki/API:Parsing_wikitext)让我相信" text"可以用作类似于" title,"的参数。以下内容不会返回任何内容:

 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 );
            }
        })
    })
})

1 个答案:

答案 0 :(得分:1)

您所指的Parsing WikiText页面解释了如何解析任意WikiText。这与此无关。

您正在使用Search API,并且只能使用该模块的返回属性。在这种情况下,您可能正在寻找snippet属性:

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

查看Search API文档以获取更多选项。

P.S。您还可以使用MediaWiki's API Sandbox来测试您的API请求。