我是Ruby和Rails世界的新手。
我看过导演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个不同的Feed中提取文本并在控制台上显示
类似
url1 = "http://www.telegraph.co.uk/sport/football/rss"
url2 = "http://www.telegraph.co.uk/sport/cricket/rss"
期待您的帮助和建议
谢谢
高塔姆
答案 0 :(得分:1)
如果您正在处理Feed,则应使用Feedzilla
http://railscasts.com/episodes/168-feed-parsing
http://github.com/pauldix/feedzirra
像魅力一样。
祝你好运!答案 1 :(得分:0)
您已安装以下内容: libxml2的 的libxml2-dev的 的libxslt 的libxslt-dev的
答案 2 :(得分:0)
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是它的网址。
<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')
对于许多Feed,只需使用循环
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
答案 3 :(得分:0)
无需循环......只需
puts doc.xpath('//link/text()')
将打印所有链接文字。