如何从维基百科获取特定数据?
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。这取决于正确维护的维基数据信息,但情况并非总是如此。
在这种情况下,您最好使用信息框。
我只想获取有关视频游戏(例如 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。这取决于正确维护的维基数据信息,但情况并非总是如此。
在这种情况下,您最好使用信息框。