Class: Scraper
- Inherits:
-
Object
- Object
- Scraper
- Defined in:
- lib/fender_guitar_catalogue/scraper.rb
Constant Summary collapse
- BASE_URL =
"https://www.fender.com/en-AU/"
Instance Method Summary collapse
- #get_page(url = BASE_URL) ⇒ Object
- #scrape(type) ⇒ Object
- #scrape_content(url) ⇒ Object
- #scrape_test ⇒ Object
Instance Method Details
#get_page(url = BASE_URL) ⇒ Object
5 6 7 |
# File 'lib/fender_guitar_catalogue/scraper.rb', line 5 def get_page(url = BASE_URL) Nokogiri::HTML(open(url)) end |
#scrape(type) ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/fender_guitar_catalogue/scraper.rb', line 22 def scrape(type) if type == "bass" doc = get_page(url = "#{BASE_URL}electric-basses/?start=0&sz=200") elsif type == "electric" doc = get_page(url = "#{BASE_URL}electric-guitars/?start=0&sz=200") elsif type == "acoustic" doc = get_page(url = "#{BASE_URL}acoustic-guitars/?start=0&sz=200") end doc.css(".product-tile").each.with_index(1).map do |guitar, i| model = guitar.css(".pdp-link").text.strip price = guitar.css(".price").text.strip url = guitar.css("a.product-tile-image").attr("href").value puts "#{i}. #{model}" Guitar.new(model: model, price: price, url: url) end end |
#scrape_content(url) ⇒ Object
42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/fender_guitar_catalogue/scraper.rb', line 42 def scrape_content(url) page_url = "#{BASE_URL}#{url}" doc = get_page(page_url) puts "#{doc.css(".row.long-description p").text.strip.gsub("Click here to learn more about this artist model.", "")}" puts "" puts "~Features~" puts "" li = "#{doc.css(".js-feature-bullets li")}" puts li.gsub("<li>","* ").gsub("</li>","") end |
#scrape_test ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'lib/fender_guitar_catalogue/scraper.rb', line 9 def scrape_test doc = get_page(url = "#{BASE_URL}electric-guitars/?start=0&sz=200") doc.css(".product-tile").each.with_index(1).map do |guitar, i| model = guitar.css(".pdp-link").text.strip price = guitar.css(".price").text.strip url = guitar.css("a.product-tile-image").attr("href").value puts "#{i}. #{model}" Guitar.new(model: model, price: price, url: url) end end |