2013-11-30 2 views
2

У меня есть функция, которая получает первый раздел случайной статьи в Википедии, но я не знаю, как получить фактический URL этой статьи. Я просмотрел API WikiMedia и не смог найти его.Получение ссылки из случайной статьи

getRandomArticle : function() { 
    return $.getJSON("http://en.wikipedia.org/w/api.php?action=query&generator=random&grnnamespace=0&prop=extracts&explaintext&exintro=&format=json&callback=?", function (data) {}); 
} 

Любые идеи?

ответ

4

Это не так просто, как вы могли бы подумать. API возвращает страницы с внутренними идентификаторами, и вам нужно снова использовать API для получения информации на конкретной странице, например URL.

$.getJSON("http://en.wikipedia.org/w/api.php?action=query&generator=random&grnnamespace=0&prop=extracts&explaintext&exintro=&format=json&callback=?", function (data) { 
    $.each(data.query.pages, function(k, v) { 
     $.getJSON('http://en.wikipedia.org/w/api.php?action=query&prop=info&pageids='+v.pageid+'&inprop=url&format=json&callback=?', function(url) { 
      $.each(url.query.pages, function(key, page) { 
       console.log(page); // contains the page data 
       var url = page.fullurl; // the url to the page 
      }); 
     }); 
    }); 
}); 

FIDDLE

+1

Удивительный, он работает! Просто хочу, чтобы WikiMedia не заставила нас сделать 2 вызова API для такой тривиальной информации ... – theintellects

+0

Работал отлично, спасибо! – khailcs

1

Ваш вопрос похож на What is wikipedia pageid? how to change it into real page url?.

Самый простой способ? Просто зайдите в http://en.wikipedia.org/?curid=pageid.

Если вы получаете query.result.pageid.extract, чтобы получить текст из статьи, то вы теперь являетесь pageid.

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