如何从维基百科获取特定数据?

How to get specific data from Wikipedia?

我只想获取有关视频游戏(例如 Duke Nukem 3D、Atari 游戏等)的数据。但是看看他们希望您如何查询以及其他人如何查询,我无法完全理解如何查询。我已经搜索了几天如何操作,但一无所获。

我也看过他们的 API 但是他们希望您如何制作查询字符串并没有真正帮助我。我尝试这样做:

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

但它在 return 中给了我这个:

{
   "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"
               }
            ]
         }
      }
   }
}

我怀疑它只是为我找到了关于什么是视频游戏的页面,但不是所有关于视频游戏的页面。我可能只是没有正确理解如何从维基百科获取数据。

有什么帮助吗?

英语维基百科中关于视频游戏的所有页面都包含名为 Infobox video game, so you just need to use Wikipedia API 的模板查询 属性 transcludedin 以获取所有页面:

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

一方面,Video Game is a redirect to Video game(维基百科中的大小写很重要,除了标题的第一个字符)所以它没有太多有用的信息。您可以使用 redirects=1 API 参数自动解析重定向。

另一个问题是您在询问 API 视频游戏文章属于什么类别。您可能想问的是视频游戏类别中有哪些文章。类似于 action=query&list=categorymembers&cmtitle=Category%3AVideo+games.

第三个问题是类别形成一个图表,所以通常大部分相关内容都在子类别中,而不是主类别本身。 Category:Video games 也是如此。因此,即使您正确检索了文章列表,也不会特别有用。

有多种方法可以获得更有用的相关文章列表。

  • 你可以像Termininja说的那样基于信息框包含进行查询。这样做的问题是它会错过没有信息框的文章(通常较新,较少 well-written 个)。
  • 您可以使用独立的实验性 category graph search service 查找视频游戏类别和子类别中的所有文章。在实践中,对于非常通用的类别(例如 "video games" )可能很危险,因为类别系统很混乱 - 它不是一个合适的树,它包含循环和其他奇怪的东西,所以你可能会发现当深入到子类别时内容甚至与视频游戏无关。 (例如视频游戏 > 视频游戏文化 > 书呆子文化 > 动漫和漫画迷。)
  • 您可以使用 SPARQL queries with Wikidata, such as is a: video game。这取决于正确维护的维基数据信息,但情况并非总是如此。

在这种情况下,您最好使用信息框。