Wikipedia api全文搜索返回带有标题,片段和图像的文章

时间:2014-09-17 12:50:52

标签: mediawiki wikipedia wikipedia-api mediawiki-api

我一直在寻找一种基于搜索字符串查询维基百科api的方法,以查找具有以下属性的文章列表:

  • 标题
  • 代码段/说明
  • 与文章相关的一个或多个图片。

我还必须使用jsonp进行查询。

我尝试过使用list = search参数

http://en.wikipedia.org/w/api.php?action=query&list=search&prop=images&format=json&srsearch=test&srnamespace=0&srprop=snippet&srlimit=10&imlimit=1

但它似乎忽略了prop = images,我还尝试使用prop = imageinfo和prop = pageimages进行变换。但他们都给我的结果与使用list = search。

相同

我也尝试过action = opensearch

http://en.wikipedia.org/w/api.php?action=opensearch&search=test&limit=10&format=xml

当我设置format = xml时,这正是我想要的,但是当使用format = json时返回一个简单的页面标题数组,因此因为jsonp要求而失败。

还有另一种做法吗?我真的想在一个请求中解决这个问题,而不是先发出第一个搜索请求,然后使用titles = x | y | z

进行第二次图像请求

2 个答案:

答案 0 :(得分:19)

正如Bergi建议的那样,使用发电机是这里的方法。特别是我会做什么:

整个查询可能如下所示:

http://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrsearch=test&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max

答案 1 :(得分:1)

  

我尝试过使用list = search参数,但似乎忽略了prop = images

如果要检索任何properties,您需要指定要获取这些内容的页面列表;例如使用titles=pageids=revids=参数。您没有发送任何内容,因此您未获得prop=images的结果。

如果您确实使用了api.php?action=query&list=search&srsearch=test&prop=images&titles=test,那么您将获得test Test页面图片的搜索结果。

您也可以使用list查询为您的属性查询生成的集合,使用list模块作为generator。查询看起来像 api.php?action=query&generator=search&gsrsearch=test&gsrnamespace=0&gsrprop=snippet&prop=images。不幸的是,它不会产生列表包含的属性,只会使用pageids进行基本属性查询。

使用两个查询可能是要走的路。顺便说一句,我建议使用pageimages property,它可能会给你最好的结果。

相关问题