Nokogiri从XML :: NodeSet中选择超链接

时间:2012-11-24 13:54:06

标签: ruby xml rss nokogiri

我编写了以下简单脚本来解析reddit / r / documentaries

require 'open-uri'
require 'nokogiri'

top_docs = Nokogiri::XML(open("http://www.reddit.com/r/Documentaries/top.rss"))
top_docs.xpath('//item').each do |documentary|
    documentary_description = documentary.xpath('description')
end

我正在尝试收集documentary_description中所有超链接的数组。我应该用什么选择器/方法来实现这个目标?

由于

3 个答案:

答案 0 :(得分:3)

您可以使用URI提供的extract方法:

top_docs.xpath('//item').each do |documentary|
  documentary_description = documentary.xpath('description')
  links = URI.extract(documentary_description.text)
  ...
end

答案 1 :(得分:2)

单线(使用@shioyama注明的方便URI#extract):

links = URI.extract(top_docs.xpath('//item/description').to_a.join(" "))

答案 2 :(得分:1)

注意URI#extract,在这种情况下,它会选择一个可能不需要的img src。 Nokogiri更可靠:

links = Nokogiri::HTML(documentary_description.text).search('a').map{|x| x[:href]}