-2

我正在使用 HTML 和 JavaScript编写“自动 wikifier”工具。对于文本中要维基化的每个单词,我需要获取包含该单词的页面列表(以便文本中的匹配短语可以自动被维基化,如果它们被发现)。有没有办法使用 Wikipedia 的 API 或 Web 服务之一来获取包含特定单词的所有 Wikipedia 页面的列表?

function getMatchingPageTitles(theString){
    //get a list of all matching page titles for a specific string, using one of Wikipedia's APIs or web services
}
4

2 回答 2

6

首先 不确定 是否 理解这样东西会有什么用处_ (维基百科有所有常用词的文章,我认为指向它们的链接没有任何用处。)

但如果你真的想做这样的事情,我认为更好的方法是使用API来找出输入文本中的哪些单词有文章。

例如,对于 string I am writing an "auto-wikifier" tool,您的查询可能类似于:

http://en.wikipedia.org/w/api.php?format=xml&action=query&titles=I|am|writing|an|auto-wikifier|tool

答案是:

<api>
  <query>
    <normalized>
      <n from="am" to="Am" />
      <n from="writing" to="Writing" />
      <n from="an" to="An" />
      <n from="auto-wikifier" to="Auto-wikifier" />
      <n from="tool" to="Tool" />
    </normalized>
    <pages>
      <page ns="0" title="Auto-wikifier" missing="" />
      <page pageid="2513432" ns="0" title="Am" />
      <page pageid="2513422" ns="0" title="An" />
      <page pageid="25346998" ns="0" title="I" />
      <page pageid="30677" ns="0" title="Tool" />
      <page pageid="32977" ns="0" title="Writing" />
    </pages>
  </query>
</api>

几点注意事项:

  • 结果不是您指定的顺序。
  • 如果页面不存在,则结果具有missing=""属性。
  • JSON 和 JSONP 格式也可用,可能更适合 JavaScript。
  • titles每个查询的参数限制为 50 个。
于 2013-01-22T18:23:43.697 回答
1

API:Allpages是一个有趣的开始。可悲的是,它仅限于 500 个查询

于 2013-02-16T23:46:10.587 回答