2017-03-23 20 views
0

Ich möchte nur Daten erhalten, die sich auf Videospiele beziehen (wie Duke Nukem 3D, Atari Games, etc.). Aber wenn ich mir anschaue, wie sie erwarten, dass du abfragst und wie andere es getan haben, kann ich mir nicht vorstellen, wie ich es machen soll. Ich habe jetzt ein paar Tage gesucht, wie es geht, aber ich bin leer ausgegangen.Wie man spezifische Daten von Wikipedia erhält?

Ich hatte auch einen Blick auf ihre API, aber wie sie wollen, dass Sie einen Abfrage-String machen, hat mir nicht wirklich geholfen. Ich habe versucht, dies zu tun:

https://en.wikipedia.org/w/api.php?action=query&prop=categories&format=json&titles=Video_Game 

Aber es gab mir dies im Gegenzug:

{ 
    "batchcomplete":"", 
    "query":{ 
     "normalized":[ 
     { 
      "from":"Video_Game", 
      "to":"Video Game" 
     } 
     ], 
     "pages":{ 
     "361741":{ 
      "pageid":361741, 
      "ns":0, 
      "title":"Video Game", 
      "categories":[ 
       { 
        "ns":14, 
        "title":"Category:Redirects from other capitalisations" 
       }, 
       { 
        "ns":14, 
        "title":"Category:Unprintworthy redirects" 
       } 
      ] 
     } 
     } 
    } 
} 

Ich vermute, es hat mich gefunden einfach die Seite für das, was ein Videospiel, aber nicht alle Seiten, die über Video sind Spiele. Ich kann einfach nicht richtig verstehen, wie man Daten von Wikipedia erhält.

Irgendwelche Hilfe?

Antwort

1

Alle Seiten in Englisch Wikipedia über Videospiele enthalten Vorlage Infobox video game genannt, so dass Sie nur Wikipedia API Abfrage mit Eigentum verwenden müssen alle transcludedin bekommen sie:

https://en.wikipedia.org/w/api.php?action=query&prop=transcludedin&tilimit=500&titles=Template:Infobox_video_game 
+0

Oooh Vorlagen. Das ist der eine. Okay.Danke, das erklärt es besser! – OmniOwl

0

Für eine Sache, ist Video Game ein redirect-Video game (Großschreibung spielt in Wikipedia eine Rolle, mit Ausnahme des allerersten Buchstabens des Titels), also hat es nicht viele nützliche Informationen. Sie können den API-Parameter redirects=1 zum automatischen Auflösen von Weiterleitungen verwenden.

Ein weiteres Problem ist, dass Sie die API fragen, in welchen Kategorien der Videospielartikel ist. Was Sie wahrscheinlich wollten, ist zu fragen, welche Artikel in der Videospielkategorie sind. Das ist so etwas wie action=query&list=categorymembers&cmtitle=Category%3AVideo+games.

Das dritte Problem besteht darin, dass Kategorien einen Graphen bilden, so dass der Großteil des relevanten Inhalts normalerweise in Unterkategorien und nicht in der Hauptkategorie selbst liegt. Das ist auch bei Category:Video games der Fall. Selbst wenn Sie die Artikelliste korrekt abgerufen hätten, wäre dies nicht besonders nützlich gewesen.

Es gibt verschiedene Möglichkeiten, um eine nützlichere Liste relevanter Artikel zu erhalten.

  • Sie können basierend auf Infobox Einschluss abfragen, wie Termininja sagte. Das Problem dabei ist, dass Artikel fehlen werden, die keine Infobox haben (in der Regel neuere, weniger gut geschriebene).
  • Sie können das experimentelle, eigenständige category graph search service verwenden, um alle Artikel in der Videospielkategorie und -unterkategorien zu finden. In der Praxis kann das bei sehr generischen Kategorien wie "Videospielen" gefährlich sein, weil das Kategoriesystem chaotisch ist - es ist kein richtiger Baum, es enthält Schleifen und andere seltsame Dinge, so dass Sie möglicherweise den Inhalt tief genug in Unterkategorien finden ist nicht einmal entfernt mit Videospielen verwandt. (Zum Beispiel Videospiele> Videospiel Kultur> Nerd Kultur> Anime und Manga Fandom.)
  • Sie können SPARQL Abfragen mit Wikidata, wie is a: video game. Dies hängt davon ab, dass die Wikidata-Informationen ordnungsgemäß verwaltet werden, was nicht immer der Fall ist.

Sie sind wahrscheinlich am besten mit der Infobox in diesem Fall.

+0

Ich habe versucht, zu folgen, was Termininja gesagt hat und dann ein Programm geschrieben, um rekursiv alle "fortfahren" Segmente durchzugehen, bis ich sie alle bekam. Ich habe am Ende 22029 Einträge gefunden und dann eine andere Abfrage verwendet, um die Wiki Base Item ID jedes dieser Einträge mit ihren Titeln zu finden. Jetzt habe ich alle eindeutigen Kennzeichnungen und benötige alle Artikelinformationen mit denen. – OmniOwl

+0

@Vipar, Sie können alle Wikidata IDs mit Ihrer ersten Abfrage erhalten: https://en.wikipedia.org/w/api.php?action=query&generator=transcludedin&prop=pageprops&Titles=Template:Infobox_video_game&ppprop=wikibase_item>ilimit=500 mit Generator. – Termininja

+0

@Termininja Ja, ich habe versucht, den ganzen Generator-Deal zu verstehen, aber ich konnte es nicht funktionieren lassen, also gab ich auf – OmniOwl

Verwandte Themen