2012-08-10 64 views
5

我需要使用Wikipedia API Query或任何其他api(如Opensearch)来查询具有某些属性的简单页面列表。查询具有属性的维基百科页面

输入:页面(文章)标题或ID列表。
输出:(在OpenSearch的API等)
页面ID
标题
片断/描述(如在OpenSearch的API)
页URL
图像URL

:的包含下列各个属性页的列表

与此类似的结果:
http://en.wikipedia.org/w/api.php?action=opensearch&search=miles%20davis&limit=20&format=xml
仅适用于页面标识符而不适用于搜索,而是标题或页面标题的精确页面列表。

这应该是一个相当简单的事情,但我一直坚持这一段时间尝试MW api手册中的各种URL组合,但没有成功。

回答

2

我不认为除Open Search API之外还有另一种获取开放式搜索数据的方法,但根据您感兴趣的Wikipedia,可能会安装其他扩展程序来帮助您。以英文维基百科为例,我们可以利用MobileFrontendPageImages扩展,这发生在be installed there

  • 标题URL可从本地链接到MediaWiki API。要获得网址,你可以使用prop=info,并与inprop=url指定它是你感兴趣的URL。
  • 突出图像的页面prop=pageimages返回,感谢PageImages。
  • MobileFrontend添加了一个名为extracts的属性,您可以使用指令exintro获取的第一段。但请注意,MediWiki标记很复杂,结果可能并不总是完美无缺。如果我们把它全部集中在一个单一的查询,这将是这样的:

http://en.wikipedia.org/w/api.php?action=query&pageids=21482&prop=pageimages|info|extracts&inprop=url&exintro

给这个:

<api> 
    <query> 
    <pages> 
     <page pageid="21482" ns="0" title="Nairobi" pageimage="Nairobi_Montage.jpg" contentmodel="wikitext" pagelanguage="en" touched="2014-02-06T06:10:01Z" lastrevid="594161616" counter="" length="89157" fullurl="http://en.wikipedia.org/wiki/Nairobi" editurl="http://en.wikipedia.org/w/index.php?title=Nairobi&amp;action=edit"> 
     <thumbnail source="http://upload.wikimedia.org/wikipedia/commons/thumb/6/66/Nairobi_Montage.jpg/45px-Nairobi_Montage.jpg" width="45" height="50" /> 
     <extract xml:space="preserve"> 
      &lt;p&gt;&lt;b&gt;Nairobi&lt;/b&gt; /naɪˈroʊbi/ is the [...] 
     </extract> 
     </page> 
    </pages> 
    </query> 
</api> 
0

这里是一个多步骤的过程中得到维基百科名单文章的页面标题和属性,然后获取页面ID和URL。

请注意:它确实使用了以前答案的一部分:“标题和网址可以从本地MediaWiki API获得。要获取网址,您可以使用prop = info,并使用inprop = url指定它是您感兴趣的网址。“

如果您希望将维基百科API用于您自己的应用程序并搜索维基百科以获取关于某个主题的文章列表,并且您希望以JSON格式提供答案,那么您可以使用以下URL :
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=REPLACE_ME_WITH_SEARCH_TOPIC&format=json&callback= ?

如果你的眼睛有问题解析来自的结果,然后再更换?“格式= JSON &回调=”与“formatversion = 2”就像下面的例子,使其更容易对你的眼睛:
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=REPLACE_ME_WITH_SEARCH_TOPIC&formatversion=2

以下示例将为我提供JSON格式“泰国”的文章标题和属性批处理列表,之后我将使用结果标题来查找这些文章的页面标识和URL。
URL第1步:
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=thailand&format=json&callback=?

从步骤1,我能获得冠军我从产生的JSON内需要的名单,第2步,我用这些头衔在另一个API查询获得了在步骤1( aka步骤2)获得步骤2的结果JSON ...结果中这些文章的页面ID和URL。

这里是维基百科的文章标题从产生JSON的第1步:

  • 泰国
  • 泰国
  • 纲要泰国
  • 地理
  • 经济在泰国
  • 泰国
  • 足球
  • 泰国南部
  • Gove泰国rnment
  • 泰国北部
  • 泰国的文化
  • 影院泰国

网址第2步:
https://en.wikipedia.org/w/api.php?action=query&titles=Thailand|Outline%20of%20Thailand|Geography%20of%20Thailand|Economy%20of%20Thailand|Football%20in%20Thailand|Southern%20Thailand|Government%20of%20Thailand|Northern%20Thailand|Culture%20of%20Thailand|Cinema%20of%20Thailand&prop=info&inprop=url&format=json&callback=?