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 に答える