class GDNewsScraper::Scrapers::PolygonCOM::Reviews

Attributes

articles[RW]
page[RW]

Public Class Methods

new(offset = 1) click to toggle source
# File lib/GDNewsScraper/scrapers/polygon_com/reviews.rb, line 8
def initialize(offset = 1)
  headers  = { "User-Agent" => "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36" }
  uri      = "https://www.polygon.com/games/reviewed/#{offset}"

  @page   ||= Nokogiri::HTML(HTTParty.get(uri, headers: headers))
  @articles = Hash.new

  pagination = container.css('.pagination').children[3].children.text.split

  articles[:stream_size] = pagination.last.to_i
  articles[:offset]      = pagination[3].to_i
  articles[:total]       = get_all_reviews.size

  articles[:feed] = Hash.new
  articles[:feed][:source] = 'polygon'
  articles[:feed][:label]  = 'Polygon'

  articles[:stream] = get_all_reviews
end

Public Instance Methods

get_all_reviews() click to toggle source
# File lib/GDNewsScraper/scrapers/polygon_com/reviews.rb, line 28
def get_all_reviews
  reviews = Hash.new

  page.css('.m-game--index__list').children.each do |review|

    if review.element?
      body       = review.children
      content    = body.css('.body').children[3].text
      review_id  = body.css('.body').children[1].children[1].attribute('href').text.split('/').last.to_i

      review[review_id][:id]      = review_id
      review[review_id][:hash]    = Base64.encode64(body.css('.body').children[1].children[1].text)
      review[review_id][:url]     = body.css('.body').children[1].children[3].attribute('href').value
      review[review_id][:title]   = body.css('.body').children[1].children[1].text.strip
      review[review_id][:content] = content.empty? ? nil : content
      review[review_id][:score]   = body.css('.score').text.strip.to_f
      review[review_id][:date]    = body.css('.meta').children[1].css('li').last.children.last.text
    end
  end

  return reviews
end

Private Instance Methods

container() click to toggle source
# File lib/GDNewsScraper/scrapers/polygon_com/reviews.rb, line 53
def container
  page.css('.m-game--index__list-wrapper')
end