Class: MovieRecommender::Scraper

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeScraper

Returns a new instance of Scraper.



5
6
7
8
9
10
11
# File 'lib/movie_recommender/scraper.rb', line 5

def initialize
  location = MovieRecommender::CLI.all[1]
  postal_code = MovieRecommender::CLI.all[0]
  @base_url = "https://www.imdb.com/"
  @html = open("#{@base_url}/showtimes/location/#{location}/#{postal_code}")
  @document = Nokogiri::HTML(html)
end

Instance Attribute Details

#base_urlObject

Returns the value of attribute base_url.



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

def base_url
  @base_url
end

#descriptionObject

Returns the value of attribute description.



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

def description
  @description
end

#documentObject

Returns the value of attribute document.



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

def document
  @document
end

#htmlObject

Returns the value of attribute html.



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

def html
  @html
end

#scoreObject

Returns the value of attribute score.



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

def score
  @score
end

Instance Method Details

#scrape_details(url) ⇒ Object



21
22
23
24
25
26
27
28
# File 'lib/movie_recommender/scraper.rb', line 21

def scrape_details(url)
  html = open("#{@base_url}/#{url}")
  document = Nokogiri::HTML(html)
  @score = document.css(".AggregateRatingButton__RatingScore-sc-1il8omz-1.fhMjqK").text.strip
  description_row = document.css(".ipc-html-content.ipc-html-content--base").first.text.strip.split(".")
  description_row.pop()
  @description = description_row.join(".")
end

#scrape_moviesObject



13
14
15
16
17
18
19
# File 'lib/movie_recommender/scraper.rb', line 13

def scrape_movies
  self.document.css(".lister-item.mode-grid").collect do |movie|
    title = movie.css(".title").text.strip
    url = movie.css(".title").css("a").attr("href").value.split("/").slice(2, 3).join("/")
    MovieRecommender::Movie.new(title: title, url: url)
  end
end