Wiki引用API?

时间:2012-12-07 12:01:02

标签: ruby wikipedia dbpedia wikipedia-api

我想通过JSON获取Wikiquote页面的结构化版本(基本上我需要所有短语)

示例: http://en.wikiquote.org/wiki/Fight_Club_(film)

我尝试过:http://en.wikiquote.org/w/api.php?format=xml&action=parse&page=Fight_Club_(film)&prop=text

但是我得到了所有HTML源代码。我需要每个pharse作为数组的元素

我怎样才能通过 DBPEDIA 实现这一目标?

http://f.cl.ly/items/2v3w1U2c0J0z1M0V0k0b/Schermata%2012-2456269%20alle%2013.06.24.png

2 个答案:

答案 0 :(得分:4)

有一件事我不确定你是否可以使用DBpedia查询wiki引号,其次,DBpedia只能以结构化的方式为你提供信息框数据,它不会以任何方式结构化文章内容。相反,您可以使用Media wiki api来获取数据

编辑:

您正在尝试的URI会为您提供一个文本,这样可以使事情变得更容易但不完全。 在你的控制台中尝试这段代码。

require 'Nokogiri'

content = JSON.parse(open("http://en.wikiquote.org/w/api.php?format=json&action=parse&page=Fight_Club_%28film%29&prop=text").read)

data = content['parse']['text']['*']

xpath_data = Nokogiri::HTML data

xpath_data.xpath("//ul/li").map{|data_node| data_node.text}

这是我最接近答案的,当然这不完全正确,因为你会得到很多不必要的数据。但是如果你深入了解Nokogiri和xpath,并找出如何确定你需要的节点,你可以得到一个解决方案,它将给你正确的报价至少90%的时间

答案 1 :(得分:1)

只需将格式更改为JSON即可。查看Wikipedia API以获取更多详细信息。 http://en.wikiquote.org/w/api.php?format=json&action=parse&page=Fight_Club_(film)&prop=text