Class: BookReleasesCliApp::Scraper
- Inherits:
-
Object
- Object
- BookReleasesCliApp::Scraper
- Defined in:
- lib/book_releases_cli_app/scraper.rb
Class Method Summary collapse
-
.bam_scrape_details(url) ⇒ Object
– self.bam_scraper –.
- .bam_scraper ⇒ Object
-
.bn_scrape_details(url) ⇒ Object
– self.bn_scraper –.
- .bn_scraper ⇒ Object
Class Method Details
.bam_scrape_details(url) ⇒ Object
– self.bam_scraper –
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/book_releases_cli_app/scraper.rb', line 85 def self.bam_scrape_details(url) details = {} main_url = url html = open(main_url) doc = Nokogiri::HTML(html) details = { :detail_title => doc.css("div#details-description-container div span.details-title-text")[0].text, :detail_author => doc.css("div#details-description-container div span.details-author-text").text.gsub("by ", "").gsub("- ", "").gsub("\n",""), :release_date => doc.css("div#details-description-container div.price-block-quote-text strong")[0].text.gsub("This item will ship on ", "").split(".")[0], :overview => doc.css("span.details-content-text").text.gsub(/\s+/, " ") } end |
.bam_scraper ⇒ Object
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/book_releases_cli_app/scraper.rb', line 58 def self.bam_scraper base_url = "http://www.booksamillion.com" comingsoon_page = "/comingsoon?mobile=no&DDTN=Books&DDLN=Coming-Soon&id=7171783864562" main_url = "#{base_url}#{comingsoon_page}" html = open(main_url) doc = Nokogiri::HTML(html) doc.css("div#content .product-list .experiments-module-content-display").collect do |product| book_url = product.css("a").attr("href").value book_details = self.bam_scrape_details(book_url) book_info = { :url => book_url, :title => product.css("a strong")[0].text, :author => product.css("span")[0].text, :detail_title => book_details[:detail_title], :detail_author => book_details[:detail_author], :type => product.css("span")[1].text, :price => product.css("a strong")[1].text, :release_date => book_details[:release_date], :overview => book_details[:overview] } #binding.pry end end |
.bn_scrape_details(url) ⇒ Object
– self.bn_scraper –
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
# File 'lib/book_releases_cli_app/scraper.rb', line 33 def self.bn_scrape_details(url) details = {} main_url = url html = open(main_url) doc = Nokogiri::HTML(html) bformat = doc.css("section.formatSelect").text.gsub("\n", "").split(" - ") [0] bprice = doc.css("section.formatSelect").text.gsub( / *\n+/, " - " ).split(" - ")[2] if bformat == "" bformat = doc.css("div#prodPromo h2#pdp-info-format").text.gsub("\n", "") bprice = doc.css("div#prodPromo span#pdp-cur-price").text end details = { :detail_title => doc.css("header#prodSummary-header h1").text, :detail_author => doc.css("header#prodSummary-header span a").text, :detail_type => bformat, :detail_price => bprice, :release_date => doc.css("div#ProductDetailsTab td")[2].text, :overview => doc.css("div#productInfoOverview p").text.gsub(/\s+/, " ") } end |
.bn_scraper ⇒ Object
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/book_releases_cli_app/scraper.rb', line 2 def self.bn_scraper newbooks = [] base_url = "https://www.barnesandnoble.com" comingsoon_page = "/b/coming-soon/_/N-1oyfZ8q8" main_url = "#{base_url}#{comingsoon_page}" html = open(main_url) doc = Nokogiri::HTML(html) doc.css("div#main-content div.product-shelf-info").collect do |product| title_url = product.css(".product-shelf-title a").attr("href").text.split(";")[0] session_url = product.css(".product-shelf-title a").attr("href").text.split("?").last book_details = self.bn_scrape_details("#{base_url}#{title_url}?#{session_url}") book_info = { :url => "#{base_url}#{title_url}?#{session_url}", :title => product.css(".product-shelf-title a").text, :author => product.css(".product-shelf-author").text.gsub("\n\nby ", ""), :detail_title => book_details[:detail_title], :detail_author => book_details[:detail_author], :type => book_details[:detail_type], :price => book_details[:detail_price], :release_date => book_details[:release_date], :overview => book_details[:overview] } #binding.pry end end |