0

我使用 Feedjira Gem (Rails) 从多个网站获取/抓取 rss-feed。一切正常,但唯一困扰我很长时间的是源代码(我从中获取 rss 的网站)。

我想向用户展示 rss 来自哪个网站。现在,我抓取整个网址,但我只想抓取 www 之后和 .com 之前的内容。无论如何,我可以让它工作,或者我可以从 rss 文件中获取源。

我在 rss 文件中看到了这个,但不能抓住它。

 <channel>
 <link>http://www.domain.com/</link>

这是我的整个模型。

class FeedEntry < ActiveRecord::Base
  acts_as_punchable

  def self.update_from_feed(feed_url)
    feed = Feedjira::Feed.fetch_and_parse(feed_url)
    add_entries(feed.entries)
  end

  private

  def self.add_entries(entries)
    entries.each do |entry|
      unless exists? :guid => entry.id
        create!(
            :name         => entry.title,
            :url          => entry.url,
            :guid         => entry.id,
            :source       => entry.url,
            :summary      => entry.summary,
            :published_at => entry.published,
        )
      end
    end
  end
end

提前致谢!

4

1 回答 1

0

您可以通过以下方式获取源

feed = Feedjira::Feed.fetch_and_parse(feed_url)
source = feed.url # -> http://www.domain.com/

要获取 www 之后和 .com 之前的内容,您可以执行以下操作

source = URI.parse(feed.url).host.split('.')[-2] # -> domain

现在,我们开始

  def self.update_from_feed(feed_url)
    feed = Feedjira::Feed.fetch_and_parse(feed_url)
    source = URI.parse(feed.url).host.split('.')[-2]
    add_entries(feed.entries, source)
  end

  private

  def self.add_entries(entries, source)
    entries.each do |entry|
      unless exists? :guid => entry.id
        create!(
            :name         => entry.title,
            :url          => entry.url,
            :guid         => entry.id,
            :source       => source,
            :summary      => entry.summary,
            :published_at => entry.published,
        )
      end
    end
  end

它会工作的!

于 2015-11-24T09:49:44.787 回答