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

Php 如何从维基百科获取特定数据?,php,query-string,wikipedia-api,Php,Query String,Wikipedia Api,我只想获得有关视频游戏的数据(如Atari游戏等)。但是,看看他们希望你如何提问,以及其他人是如何提问的,我不知道该怎么做。我已经找了好几天了,想知道怎么做,但结果一无所获 我还看了他们的API,但他们希望您如何生成查询字符串并没有真正帮助我。我试着这样做: https://en.wikipedia.org/w/api.php?action=query&prop=categories&format=json&titles=Video_Game 但它给了我这个回报: {

我只想获得有关视频游戏的数据(如Atari游戏等)。但是,看看他们希望你如何提问,以及其他人是如何提问的,我不知道该怎么做。我已经找了好几天了,想知道怎么做,但结果一无所获

我还看了他们的API,但他们希望您如何生成查询字符串并没有真正帮助我。我试着这样做:

https://en.wikipedia.org/w/api.php?action=query&prop=categories&format=json&titles=Video_Game
但它给了我这个回报:

{
   "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"
               }
            ]
         }
      }
   }
}
我怀疑它刚刚给我找到了一个关于什么是电子游戏的页面,但不是所有关于电子游戏的页面。我可能只是不理解如何正确地从维基百科获取数据


有什么帮助吗?

英文维基百科中关于视频游戏的所有页面都包含调用的模板,因此您只需使用带有属性的query
transcludedin
即可获得所有页面:

https://en.wikipedia.org/w/api.php?action=query&prop=transcludedin&tilimit=500&titles=Template:Infobox_video_game
首先,是to(除了标题的第一个字符,在维基百科中大写很重要),所以它没有太多有用的信息。您可以使用
redirects=1
API参数自动解析重定向

另一个问题是,您正在询问API视频游戏文章属于哪些类别。你可能想问的是,哪些文章属于视频游戏类别。有点像

第三个问题是类别形成了一个图表,因此通常大多数相关内容都在子类别中,而不是主类别本身。这也是中国的情况。因此,即使您正确检索了文章列表,它也不会特别有用

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

  • 正如Terminja所说,您可以基于infobox包含进行查询。问题是它会错过那些没有infobox的文章(通常是更新的,写得不太好的)
  • 您可以使用实验性的、独立的来查找视频游戏类别和子类别中的所有文章。在实践中,对于“视频游戏”等非常通用的类别来说,这可能是危险的,因为类别系统很混乱——它不是一个合适的树,它包含循环和其他奇怪的东西,所以你可能会发现,当深入到子类别时,内容甚至与视频游戏毫不相关。(例如,视频游戏>视频游戏文化>书呆子文化>动漫迷。)
  • 您可以将查询用于,例如。这取决于是否正确维护Wikidata信息,但情况并非总是如此

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

Oooh模板。就是那个。可以谢谢,这更能说明问题!我试着按照Termininja所说的去做,然后写了一个程序,递归地遍历所有的“continue”片段,直到我得到所有的片段。最后我得到了22029个条目,然后使用另一个查询来查找每个条目的Wiki基本条目ID,使用它们的标题。现在我有了所有的唯一标识符,需要用这些标识符获取所有文章信息。@Vipar,您可以通过第一次查询获取所有Wikidata ID:使用generator。@Terminja是的,我试图理解整个generator交易,但我无法使其工作,所以我放弃了