我查看了他们的 API,看起来有很多细节,但复杂性是一个障碍。对于长期使用,最好弄清楚它,但为了快速而肮脏,这是一种获取数据的方法。
我正在使用Nokogiri,它是一个 XML/HTML 解析器,非常灵活。为了便于使用,我使用 CSS 访问器。
#!/usr/bin/env ruby
require 'open-uri'
require 'nokogiri'
require 'uri'
URL = 'http://en.wikipedia.org/wiki/Ford_Motor_Company'
doc = Nokogiri::HTML(open(URL))
infobox = doc.at('table[class="infobox vcard"]')
infobox_caption = infobox.at('caption').text
uri = URI.parse(URL)
infobox_agents = Hash[ *infobox.search('td.agent a').map{ |a| [ a.text, uri.merge(a['href']).to_s ] }.flatten ]
require 'ap'
ap infobox_caption
ap infobox_agents
输出如下所示:
"Ford Motor Company"
{
"Henry Ford" => "http://en.wikipedia.org/wiki/Henry_Ford",
"William C. Ford, Jr." => "http://en.wikipedia.org/wiki/William_Clay_Ford,_Jr.",
"Executive Chairman" => "http://en.wikipedia.org/wiki/Chairman",
"Alan R. Mulally" => "http://en.wikipedia.org/wiki/Alan_Mulally",
"President" => "http://en.wikipedia.org/wiki/President",
"CEO" => "http://en.wikipedia.org/wiki/Chief_executive_officer"
}
因此,它提取了标题的文本,并返回了人们姓名的哈希值,其中键是他们的姓名,值是 URL。