Class: NewGameScores::CollectionScraper

Inherits:
Object
  • Object
show all
Defined in:
lib/new_game_scores/collection_scraper.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url = nil) ⇒ CollectionScraper

Returns a new instance of CollectionScraper.



6
7
8
# File 'lib/new_game_scores/collection_scraper.rb', line 6

def initialize(url = nil)
  @url = url 
end

Instance Attribute Details

#game_urlObject

Returns the value of attribute game_url.



3
4
5
# File 'lib/new_game_scores/collection_scraper.rb', line 3

def game_url
  @game_url
end

#metascoreObject

Returns the value of attribute metascore.



3
4
5
# File 'lib/new_game_scores/collection_scraper.rb', line 3

def metascore
  @metascore
end

#nameObject

Returns the value of attribute name.



3
4
5
# File 'lib/new_game_scores/collection_scraper.rb', line 3

def name
  @name
end

#titleObject

Returns the value of attribute title.



3
4
5
# File 'lib/new_game_scores/collection_scraper.rb', line 3

def title
  @title
end

#urlObject

Returns the value of attribute url.



3
4
5
# File 'lib/new_game_scores/collection_scraper.rb', line 3

def url
  @url
end

#userscoreObject

Returns the value of attribute userscore.



3
4
5
# File 'lib/new_game_scores/collection_scraper.rb', line 3

def userscore
  @userscore
end

Instance Method Details

#scrape_listObject



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/new_game_scores/collection_scraper.rb', line 10

def scrape_list
 game_list = Nokogiri::HTML(open(self.url, ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE,  'User-Agent' => 'safari'))
  collection = []

  game_list.css("ol.list_products li.game_product").each do |game|
    
    collection << {
      :title => game.css("div.product_title a").text.strip,
      :metascore => game.css("div.metascore_w").text,
      :userscore => game.css("li.product_avguserscore span.textscore").text,
      :game_url => 'http://www.metacritic.com/' +game.css("div.product_title a").attribute("href").text
    }
  end
  # return the projects hash
  collection.sort_by.with_index do |game, i|
      puts "#{i+1}. #{game[:title]} \n \n   Metascore: #{game[:metascore]} \n   Userscore: #{game[:userscore]} \n   Game Link: #{game[:game_url]}\n \n"
  end
end