class SfCoffee::Scraper

Public Class Methods

peets() click to toggle source
# File lib/sf_coffee/coffee_scraper.rb, line 31
def self.peets
        stores = []
        doc = Nokogiri::HTML(open("http://www.peets.com/stores/peets-stores/stores-store-list.html"))
        doc.css(".storeItem").each do |store|
        stores << {
        :name => store.children[0].text,
        :address => (store.children[2].text()+","+store.children[4].text()),
        :zip_code => store.children[0].text,
        :phone => store.children[6].text.gsub(" ", "")
    }
        end
stores.delete_if{|store| !store[:name].include?("San Francisco—")}
stores.each {|store|store[:name] = "Peet's " + store[:name].split("—")[1]}
stores.each {|store|store[:zip_code] = store[:address].split("CA")[1].gsub(" ", "")}
stores.each{|store|store[:address] = store[:address][1..store[:address].length].split(/,* CA/)[0]}
stores
end
philz() click to toggle source
# File lib/sf_coffee/coffee_scraper.rb, line 49
  def self.philz
  stores = []
  doc = Nokogiri::HTML(open("http://www.philzcoffee.com/locations-sf"))
  doc.css(".span4.mid").each do |store|
          stores << {
                  :name => "Philz " + store.css("h1").text(),
                  :address => store.css(".location-text.text-left").text.gsub("ADDRESS: ",""),
                  :phone => store.css(".pull-left.location-phone-detail .text-right").text.gsub(" ", ""),
                  :zip_code => nil
          }
  end
stores.delete_if{|store| !store[:address].include?("San Francisco")}
stores.each {|store|store[:zip_code] = store[:address].split("CA")[1].gsub(" ", "")}
stores.each{|store|store[:address] = store[:address].split(",")[0]}
stores 
  end
starbucks() click to toggle source
# File lib/sf_coffee/coffee_scraper.rb, line 5
def self.starbucks
       stores = []
doc = Nokogiri::XML(open("https://openapi.starbucks.com/location/v1/stores?apikey=7b35m595vccu6spuuzu2rjh4&city=San%20Francisco&limit=50"))
doc.xpath("//xmlns:store").each do |store|
  address = store.xpath("xmlns:address") 
  stores << {
                :name => "Starbucks " + store.xpath("xmlns:name").text,
        :address => [address.xpath("xmlns:streetAddressLine1").text(), address.xpath("xmlns:streetAddressLine2").text(), address.xpath("xmlns:streetAddressLine3").text(), address.xpath("xmlns:city").text()].delete_if{|i|i==""},
        :phone => store.xpath("xmlns:phoneNumber").text,
        :zip_code => address.xpath("xmlns:postalCode").text[0..4]
        }
end
doc = Nokogiri::XML(open("https://openapi.starbucks.com/location/v1/stores?apikey=7b35m595vccu6spuuzu2rjh4&city=San%20Francisco&offset=50&limit=50"))
doc.xpath("//xmlns:store").each do |store|
    address = store.xpath("xmlns:address") 
        stores << {
                :name => "Starbucks " + store.xpath("xmlns:name").text,
        :address => [address.xpath("xmlns:streetAddressLine1").text(), address.xpath("xmlns:streetAddressLine2").text(), address.xpath("xmlns:streetAddressLine3").text(), address.xpath("xmlns:city").text()].delete_if{|i|i==""},
        :phone => store.xpath("xmlns:phoneNumber").text,
        :zip_code => address.xpath("xmlns:postalCode").text[0..4]
        }
end
stores.each{|store|store[:address] = store[:address].join(", ")}
stores
 end