从RSS提要中提取文本的问题

问题描述:

我是Ruby和Rails世界的新手。从RSS提要中提取文本的问题

我看过铁轨投了190,我刚开始玩它。我曾经选择的小工具,找出CSS和XPath

我有下面的代码..

require 'rubygems' 
require 'nokogiri' 
require 'open-uri' 

url = "http://www.telegraph.co.uk/sport/football/rss" 
doc = Nokogiri::HTML(open(url)) 
doc.xpath('//a').each do |paragraph| 
puts paragraph.text 
end 

当我用CSS一个普通的HTML页面提取的文本,我能得到在控制台上提取的文本。

但是,当我尝试使用CSS或XPath处理上述代码中提到的以下URL的RSS Feed时,我没有得到任何输出。

如何从RSS提取文本提取?

我也有另一个愚蠢的问题。

有没有办法从2种不同的饲料中提取文本和控制台

url1 = "http://www.telegraph.co.uk/sport/football/rss" 
url2 = "http://www.telegraph.co.uk/sport/cricket/rss" 

期待您的帮助和建议

谢谢

上显示

Gautam

+0

我试过使用“.to_s”,但它仍然没有工作! – gkolan 2010-05-26 21:23:18

RSS页面不是HTML文件,它是XML,所以你应该使用Nokogiri::XML(open(url))

然后查看RSS页面的源代码。没有<a>元素。

文档中的所有链接都与<link>标签创建:

<link>http://www.telegraph.co.uk/sport/football/world-cup-2010/teams/france/7769203/France-2-Costa-Rica-1-match-report.html</link> 

链接到每篇文章也被复制为<guid>标签,因为文章在RSS ID是它的URL。

<guid>http://www.telegraph.co.uk/sport/football/world-cup-2010/teams/france/7769203/France-2-Costa-Rica-1-match-report.html</guid> 

所以,如果你需要在文档中的所有链接,使用:

url = "http://www.telegraph.co.uk/sport/football/rss" 
doc = Nokogiri::XML(open(url)) 
doc.xpath('//link').each do |paragraph| 
    puts paragraph.text 
end 

如果你只需要链接的文章,使用doc.xpath('//guid')

对于许多饲料,只使用循环

feeds = ["http://www.telegraph.co.uk/sport/football/rss", "http://www.telegraph.co.uk/sport/cricket/rss"] 
feeds.each do |url| 
    #and here goes code as before 
end 

你有t HESE安装: 的libxml2 的libxml2-dev的 的libxslt的libxslt-dev的

如果您正在处理Feed,则应使用Feedzilla

http://railscasts.com/episodes/168-feed-parsing

http://github.com/pauldix/feedzirra

就像一个魅力。

祝你好运!

无需环路...只是

puts doc.xpath('//link/text()') 

将打印所有链接文本。