class Newly::NewsCrawler

Attributes

selector[R]
title[R]
url[R]

Public Class Methods

new(args) click to toggle source
# File lib/newly/news_crawler.rb, line 10
def initialize(args)
  @feed = args[:feed]
  @url = args[:url]
  raise "The url is required" unless @url

  @selector = args[:selector] || Newly::Selector.new(Nokogiri::HTML(open @url))
end

Public Instance Methods

fetch() click to toggle source
# File lib/newly/news_crawler.rb, line 18
def fetch
  news_fetched = Set.new
  all_news = @selector.all(container: @feed.container, max: @feed.limit)

  all_news.each do |item|
    news = build_news_by(item)
    if news
      news_fetched << news
    end
  end

  news_fetched.to_a
end

Private Instance Methods

build_news_by(item) click to toggle source
# File lib/newly/news_crawler.rb, line 33
def build_news_by(item)
  if (item)
    page_crawler = Newly::PageCrawler.new(@feed.host, item)

    Newly::News.new(page_crawler: page_crawler, feed: @feed, feed_url: @url)
  end
end