Class: InternetNearMe::Scraper

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

Constant Summary collapse

REQUEST_HEADERS =
{ "User-Agent" => "Ruby/#{RUBY_VERSION}", 
"From" => "internet_near_me", 
"Referer" => "http://www.ruby-lang.org/" }

Instance Method Summary collapse

Instance Method Details

#scrape_by_zip_code(zip_code) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/internet_near_me/scraper.rb', line 21

def scrape_by_zip_code(zip_code)
  url = "http://www.yelp.com/search?find_desc=Internet+Cafes&find_loc=#{zip_code}"
  doc = Nokogiri::HTML(open(url, REQUEST_HEADERS))

  internet_cafes = []
  doc.css(".search-results-content li.regular-search-result").map do |search_result|
    internet_cafe = InternetNearMe::InternetCafe.new
    internet_cafe.name = search_result.css("a.biz-name").text.strip
    internet_cafe.address = search_result.css("address").inner_html.gsub("<br>", "\n").strip
    internet_cafe.price = search_result.css(".price-range").text.strip
    internet_cafe.url = search_result.css("a.biz-name").attribute("href").value
    internet_cafes << internet_cafe
  end
  internet_cafes
end

#scrape_details(internet_cafe) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/internet_near_me/scraper.rb', line 7

def scrape_details(internet_cafe)
  url = "http://www.yelp.com" + internet_cafe.url
  doc = Nokogiri::HTML(open(url, REQUEST_HEADERS))

  # binding.pry
  internet_cafe.rating = doc.css(".rating-info .star-img").attribute("title")
                            .value.gsub("star rating", "stars")
  internet_cafe.number_of_reviews = doc.css(".rating-info .review-count span").text.strip
  internet_cafe.hours = doc.css(".hour-range").text
  internet_cafe.phone = doc.css(".biz-phone").text.strip
  internet_cafe.website = doc.css(".biz-website a").text.strip
  internet_cafe
end