2016-11-09 28 views
0

维基百科页面按部分划分,因此如果我使用API​​并且说section=0,我将阅读本节中的文本。但一个页面可能有很多部分,我如何循环所有这些部分来加载它们?如何查找维基百科页面的所有部分并将它们全部显示出来?

MediaWiki Docs

在这里,我得到section=0 only

JSFiddle playground here

HTML

<button id="wiki" data-subject="Paris">Wikipedia</button> 

<output id="results"> 
<ul> 
</ul> 
</output> 

JS

$("ul").on("click", "a", function(e) { 
     e.preventDefault(); 
     e.stopPropagation(); 
    }); 

    $("#wiki").one('click', function(e) { 
     var articleName = $(this).data('subject'); 
     $.getJSON("https://en.wikipedia.org/w/api.php?callback=?", { 
      srsearch: articleName, 
      action: "query", 
      list: "search", 
      format: "json" 
     }, function(data) { 
      $("#results ul").empty(); 
      $("#results ul").append("<h3>Results for <b>" + articleName + "</b></h3>").text(); 
      $.each(data.query.search, function(i, item) { 
      $("#results").append("<div><a href='https://en.wikipedia.org/wiki/" + encodeURIComponent(item.title) + "' data-toggle='modal' data-target='.bs-example-modal-lg'>" + item.title + "</a><br>" + item.snippet + "</div"); 
      var myLink = $("#results a").attr("href"); 
      $("#results div a").attr("href", "#"); 
      }); 
      $('.modal').on('show.bs.modal', function (e) { 
       $.getJSON("https://en.wikipedia.org/w/api.php?action=parse&section=0&prop=text&format=json&callback=?", { 
        page: e.relatedTarget.textContent 
       }, function(data) { 
       var markup = data.parse.text["*"]; 
       var blurb = $('<div></div>').html(markup); 
       blurb.find('a').each(function() { 
        $(this).replaceWith($(this).html()); 
       }); 
       blurb.find('sup').remove(); 
       blurb.find('.mw-ext-cite-error').remove(); 
       $(".modal-header .modal-title").html(articleName); 
       $(".modal-header .modal-title").promise().done(function(){ 
        $(".modal-title").css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1.0}); 
       }); 
       $(".modal-body").html($(blurb).find("p")); 
       $(".modal-body").promise().done(function(){ 
        $(".modal-body").css({opacity: 0.0, visibility: "visible"}).animate({opacity: 1.0}); 
           }); 
       }); 
      }); 
     }); 
    }); 
+0

链接到它要求不要抓取维基百科?转储很大,使用api是可能的。例如,这个服务就是http://wdq.wmflabs.org/。但我如何阅读alla部分? –

+0

我还没有真正爬行,我正在使用他们的api –

+0

https://en.wikipedia.org/wiki/Wikipedia:Database_download#Please_do_not_use_a_web_crawler – Liam

回答

0

只需去除section=0会做:

$.getJSON("https://it.wikipedia.org/w/api.php?format=json&action=parse&prop=text&callback=?", {... 
相关问题