Class: Mmonews::Scraper

Inherits:
Object
  • Object
show all
Defined in:
lib/mmonews/scraper.rb

Constant Summary collapse

@@all =
[]

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url = "") ⇒ Scraper

Returns a new instance of Scraper.



7
8
9
10
# File 'lib/mmonews/scraper.rb', line 7

def initialize(url = "")
  self.url = url if self.class.valid_url?(url)
  self.save
end

Instance Attribute Details

#elapsed_timeObject

Returns the value of attribute elapsed_time.



3
4
5
# File 'lib/mmonews/scraper.rb', line 3

def elapsed_time
  @elapsed_time
end

#urlObject

Returns the value of attribute url.



3
4
5
# File 'lib/mmonews/scraper.rb', line 3

def url
  @url
end

Class Method Details

.allObject



16
17
18
# File 'lib/mmonews/scraper.rb', line 16

def self.all
  @@all
end

.valid_url?(url) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/mmonews/scraper.rb', line 33

def self.valid_url?(url)
  url =~ /\A#{URI::regexp}\z/ ? true : false
end

Instance Method Details

#documentObject



20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/mmonews/scraper.rb', line 20

def document
  start_time = Time.now
  begin
    @document ||= Nokogiri::HTML(open(self.url))
  rescue StandardError => error
    puts "Nokogiri invalid url:\n #{self.class} :: #{self}"
    puts "url: #{self.url}"
  end
  end_time = Time.now
  self.elapsed_time = (end_time - start_time)
  @document
end

#saveObject



12
13
14
# File 'lib/mmonews/scraper.rb', line 12

def save
  self.class.all << self
end