0

我编写了以下简单的脚本来解析 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 中所有超链接的数组。我应该使用什么选择器/方法来完成这个?

谢谢

4

3 回答 3

3

可以使用extractURI提供的方法:

top_docs.xpath('//item').each do |documentary|
  documentary_description = documentary.xpath('description')
  links = URI.extract(documentary_description.text)
  ...
end
于 2012-11-24T14:02:23.337 回答
2

单线(使用URI#extract@shioyama 指出的方便):

links = URI.extract(top_docs.xpath('//item/description').to_a.join(" "))
于 2012-11-24T14:31:53.923 回答
1

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

links = Nokogiri::HTML(documentary_description.text).search('a').map{|x| x[:href]}
于 2012-11-24T22:48:46.457 回答