我编写了以下简单脚本来解析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中所有超链接的数组。我应该用什么选择器/方法来实现这个目标?
由于
答案 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]}