当前位置: 首页 > 知识库问答 >
问题:

Wikipedia图像API搜索-包含全部结果fileinfo

楚皓君
2023-03-14

我们想建立一个基于维基百科公共图像数据库的图像搜索。我曾尝试过不同的请求格式,但似乎没有一种解决方案能够完全满足我们的需求。

我们想要达到的目标:

  1. 用户搜索f.e.“爱因斯坦”
  2. 我们向他们展示了“在维基百科上找到的808项爱因斯坦研究结果”
  3. 向他们显示前10个结果并允许分页

我试过:

https://commons.wikimedia.org/w/api.php?action=query&list=search&srsearch=%22Einstein%22&srnamespace=6

返回总计结果(1842)

"query": {
    "searchinfo": {
        "totalhits": 1842
    },

结果如下:

{
    "ns": 6,
    "title": "File:Albert Einstein Head.jpg",
    "snippet": "DescriptionAlbert <span class=\"searchmatch\">Einstein</span> Head.jpg  English: Albert <span class=\"searchmatch\">Einstein</span> Fran\u00e7ais\u00a0: Portrait d'Albert <span class=\"searchmatch\">Einstein</span>  Date Copyrighted 1947, copyright not renewed. <span class=\"searchmatch\">Einstein</span>'s estate",
    "size": 968,
    "wordcount": 0,
    "timestamp": "2016-01-01T01:57:15Z"
}

但此响应缺少可下载的URL。例如,“文件:Albert Einstein Head.jpg”是https://upload.wikimedia.org/wikipedia/commons/d/d3/Albert_Einstein_Head.jpg

我需要设置另一个请求来获得正确的URL:

https://commons.wikimedia.org/w/api.php?action=query&titles=File:Albert Einstein Head.jpg|File:Einstein hair advice.jpg|File:Einstein - potpis.jpg&prop=imageinfo&iiprop=url

有没有办法在一个请求中搜索维基百科的图片,包括它们的标题、下载的网址和总结果(总点击数)?

共有1个答案

邵献
2023-03-14

是的,您可以将搜索查询用作所谓的生成器,然后使用prop=imageinfo查询该生成器的图像url结果。在您的情况下,它看起来是这样的:

https://commons.wikimedia.org/w/api.php?action=query&generator=search&gsrsearch=Einstein&gsrprop=snippet&prop=imageinfo&iiprop=url&rawcontinue&gsrnamespace=6

generator=search告诉API将此模块用作生成器。然后,此模块的参数加上前缀gsr,如gsrsearch=Einsteingsrprop=snippet,等等。最后,prop=imageinfo的工作方式与常规API查询中的工作方式类似,但将针对生成器返回的每个结果重复。

相关的:

  • 如何使用单个WIKI api调用在不同页面中获取图像URL?
 类似资料:
  • 我一直在寻找一种基于搜索字符串查询wikipedia api的方法,该搜索字符串包含以下属性的文章列表: 标题 片段/描述 与文章相关的一个或多个图像。 我还必须使用jsonp进行查询。 我尝试过使用list=search参数 http://en.wikipedia.org/w/api.php?action=query 但它似乎忽略了prop=images,我还尝试了使用prop=imageinf

  • 问题内容: 通过以下查询,我得到的结果包含单词“ International”和“ Shipping”,我还得到了包含“ International”或“ Shipping”的结果。我该怎么做才能确保结果同时包含两个单词而不只是其中之一? 任何帮助将不胜感激,谢谢! 问题答案: 在每个必需的单词前添加一个,然后使用。 11.8.2。 布尔全文搜索 在实现此功能时,MySQL使用了有时称为隐式布尔逻

  • 我正在调用YouTube API,截至上周,它不再始终如一地在特定频道上查找最新发布的视频。 我正在使用文档中实际的“尝试这个API”窗口(这里有一个已经输入参数的链接): https://developers.google.com/youtube/v3/docs/search/list?apix_params={"part":"snippet "," channelId ":" uci8e 0

  • 我目前正在参与使用Liferay(6.1 GA2)的项目。Liferay搜索结果似乎提供了指向Web内容片段的链接,而不是指向包含这些片段的页面的链接。 你们中有人经历过这个问题吗?你知道怎么解决吗? 非常感谢朋友们。 最好的,阿尔贝托

  • 我已经成功实现了Twitter搜索api,并且正在以如下所示的方式检索数据:https://developer.twitter.com/en/docs/tweets/search/api-reference/get-search-tweets 问题是,对于包含上传图像的tweet,我的JSON数据中没有这些图像url。我确实看到了被引用或重新发布的推文的媒体URL,但从未看到过原始推文本身的URL

  • 我有三个索引,它们都共享一个特定的键值对。当我用api进行全面搜索时”http://localhost:9200/_search“使用请求正文 它只返回其中两个索引的结果。我尝试使用相同的请求正文,将url更改为仅在丢失的索引中搜索”http://localhost:9200/index_name/_search“这很管用。我有什么遗漏吗? 插入所有三个索引的代码遵循相同的过程,我使用elasti