2016-11-09 6 views
0

Eine Wikipedia-Seite ist nach Abschnitten unterteilt. Wenn ich also die API verwende und sage section=0, lese ich den Text in diesem Abschnitt. aber eine Seite kann viele Abschnitte haben, wie schleife ich sie alle, um sie alle zu laden?Wie finde ich alle Abschnitte einer Wikipedia-Seite und zeige sie alle an?

MediaWiki Docs

Hier bekomme ich 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

Link zu einer Wikipedia, die nicht zu kriechen fragt? Die Deponien sind groß, mit der API ist möglich. Dieser Dienst tut es zum Beispiel http://wdq.wmflabs.org/. doch wie lese ich alla abschnitte? –

+0

Ich bin sowieso nicht wirklich kriechen, ich benutze ihre API –

+0

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

Antwort

0

einfach entfernen section=0 tun:

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