5

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

输入:页面(文章)标题或 ID 的列表。
输出:包含以下属性的页面列表:
页面 id
标题
片段/描述(如在 opensearch api 中)
页面 url
图像 url(如在 opensearch api 中)

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

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

4

2 回答 2

2

我认为除了Open Search API之外没有其他方法可以获取 Open Search 数据,但根据您感兴趣的 Wikipedia,可能会安装其他扩展来帮助您。以英文维基百科为例,我们可以利用恰好安装在那里的MobileFrontendPageImages扩展。

  • 标题url可从本机 MediaWiki API 获得。要获取 url,您可以使用prop=info, 并指定inprop=url它是您感兴趣的 url。
  • 页面的显眼图像由PageImages返回prop=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>
于 2014-02-06T12:36:37.113 回答
0

这是获取文章的 Wikipedia 页面标题和属性列表,然后获取页面 ID 和 URLS 的多步骤过程。

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

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

如果您的眼睛无法从中解析结果,请替换“format=json&callback=?” 使用“formatversion = 2”,如下例所示,让您的眼睛更容易:
https://en.wikipedia.org/w/api.php?action=query&list=search&srsearch=REPLACE_ME_WITH_SEARCH_TOPIC&formatversion=2

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

从第 1 步开始,我可以从生成的 JSON 中获取我需要的标题列表,在第 2 步中,我在另一个 API 查询(也称为第 2 步)中使用第 1 步中获得的标题来获取这些文章的页面 ID 和 URL在生成的 JSON...step2 的结果中。

以下是步骤 1 生成的 JSON 中的 Wikipedia 文章标题:

  • 泰国
  • 泰国概况
  • 泰国地理
  • 泰国经济
  • 泰国足球
  • 泰国南部
  • 泰国政府
  • 泰国北部
  • 泰国文化
  • 泰国电影

网址步骤 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=?

于 2017-02-26T12:46:10.717 回答