JS& WikipediaAPI:检索文章的介绍?

时间:2013-11-02 12:22:59

标签: jquery json wikipedia-api wikidata

鉴于WikipediaAPI,英文维基百科上的文章标题,我已经提供了一个JSON:

var url = "http://en.wikipedia.org/w/api.php?action=query&prop=description&titles=Unicorn&prop=extracts&exsentences=10&explaintext&format=json";

响应如下:

{
    "query": {
        "pages": {
            "ramdom_number_here": {
                "pageid": ramdom_number_here,
                "ns": 0,
                "title": "Unicorn",
                "extract": "The unicorn is a legendary animal that has been described since antiquity as a beast with a large, pointed, spiraling horn projecting from its forehead."
            }
        }
    }
}

鉴于每篇文章<ramdom_number_here>发生了变化,因而无法预测。

如何掌握extracttitle的值以重复使用它?

1 个答案:

答案 0 :(得分:3)

主要是攻击API的好网址,JQuery $ .getJSON,以及传递项目ID的诙谐技巧。在那里,使用Object.keys(data)[x]用您的数据坐标替换名义路径与Object.keys(data)[i]。

  • Object.keys(data) - 为您提供该级别的密钥列表。
  • 然后使用i =目标数据的数字范围。对于第一个数据点,对于我们[i] = [0]。

解决方案&GT; JSfiddle

function WD(item) {
    url = "http://en.wikipedia.org/w/api.php?action=query&prop=description&titles=" + item.toString() + "&prop=extracts&exintro&explaintext&format=json&redirects&callback=?";
    $.getJSON(url, function (json) {
        var item_id = Object.keys(json.query.pages)[0]; // THIS DO THE TRICK !
        sent = json.query.pages[item_id].extract;
        result = "<b>En :</b> <t>" + item + "</t> <b>⇒</b> " + sent;
        $('#anchor1').append("<div>"+result+"</div>"); // transformation 
    });
}
WD("Dragon");

通过一些扩展var list = ["dragon", "Unicorn", "Cat"],一个包装$.each()函数,一些快速CSS,我得到了一个优雅而简单的结果:

enter image description here

如果你想要html,请删除&explaintext。深入了解Wikipedia API以获取更多功能。

鼓励+1欢迎。