class FindRecipe::Scraper
Constants
- ROOT_URL
Public Class Methods
get_individual_recipe_page(recipe_url)
click to toggle source
# File lib/find_recipe/scraper.rb, line 53 def self.get_individual_recipe_page(recipe_url) open_url(recipe_url) end
get_recipe_page_from_keyword(keyword)
click to toggle source
# File lib/find_recipe/scraper.rb, line 48 def self.get_recipe_page_from_keyword(keyword) url = ROOT_URL + "/uk/search/#{keyword}" open_url(url) end
get_trending_recipes_page()
click to toggle source
# File lib/find_recipe/scraper.rb, line 43 def self.get_trending_recipes_page url = ROOT_URL + "/uk/trending" open_url(url) end
open_url(url)
click to toggle source
# File lib/find_recipe/scraper.rb, line 57 def self.open_url(url) Nokogiri::HTML(open(url)) end
scrape_individual_recipe_data(recipe_url)
click to toggle source
# File lib/find_recipe/scraper.rb, line 28 def self.scrape_individual_recipe_data(recipe_url) recipe_data = {} recipe_page = self.get_individual_recipe_page(recipe_url) recipe_data[:description] = recipe_page.at("meta[itemprop='description']")['content'] # Gets ingredients as an array of each ingredient recipe_data[:ingredients] = recipe_page.css(".ingredient__details").collect { |ingredient| ingredient.text.strip } # Gets steps as an array of each step recipe_data[:steps] = recipe_page.css(".step .prose").collect { |step| step.text.strip } recipe_data end
scrape_search_page(keyword)
click to toggle source
# File lib/find_recipe/scraper.rb, line 16 def self.scrape_search_page(keyword) recipe_page = self.get_recipe_page_from_keyword(keyword) recipe_cards = recipe_page.css("li.wide-card") recipe_cards.collect do |card| recipe = { name: card.css("h2.recipe-title span").text.strip, url: ROOT_URL + card.css("a.media").attribute("href").value } end end
scrape_trending_recipes_page()
click to toggle source
# File lib/find_recipe/scraper.rb, line 4 def self.scrape_trending_recipes_page recipe_page = self.get_trending_recipes_page recipe_cards = recipe_page.css(".card.feed__card") recipe_cards.collect do |card| recipe = { name: card.css("h2.recipe-title").text.strip, url: ROOT_URL + card.css("a.link-unstyled").attribute("href").value } end.uniq end