获取维基百科上包含特定单词的所有页面标题

And*_*een -2 javascript mediawiki wikipedia sparql dbpedia

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

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

svi*_*ick 6

首先, 不能 肯定 明白 怎么 有用的.(维基百科有关于所有常用词的文章,我认为与它们的链接没有任何用处.)

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

例如,对于字符串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>
Run Code Online (Sandbox Code Playgroud)

几点说明:

  • 结果不是您指定的顺序.
  • 如果页面不存在,则结果具有missing=""属性.
  • JSON和JSONP格式也可用,可能更适合JavaScript.
  • titles每个查询的参数限制为50.

  • +1解决方案不涉及用一堆无意义的流量轰炸非营利性网站. (3认同)