Class: HotelPrice::Agoda::AgodaScraper
- Inherits:
-
Object
- Object
- HotelPrice::Agoda::AgodaScraper
- Defined in:
- lib/hotel_price/agoda/agoda_scraper.rb
Instance Method Summary collapse
- #get_price(agoda_hotel_id, checkin_date, num_adults) ⇒ Object
-
#initialize(mode = :chrome) ⇒ AgodaScraper
constructor
A new instance of AgodaScraper.
- #make_date_args(checkin_date) ⇒ Object
- #make_num_adults_arg(num_adults) ⇒ Object
- #make_query_string(checkin_date, num_adults) ⇒ Object
Constructor Details
#initialize(mode = :chrome) ⇒ AgodaScraper
Returns a new instance of AgodaScraper.
7 8 9 |
# File 'lib/hotel_price/agoda/agoda_scraper.rb', line 7 def initialize(mode = :chrome) @mode = mode end |
Instance Method Details
#get_price(agoda_hotel_id, checkin_date, num_adults) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/hotel_price/agoda/agoda_scraper.rb', line 11 def get_price(agoda_hotel_id, checkin_date, num_adults) date = Time.now.strftime("%Y-%m-%d") query_string = make_query_string(checkin_date.to_s, num_adults) url = "https://www.agoda.com/ja-jp/#{agoda_hotel_id}.html?#{query_string}" driver = HotelPrice.get_selenium_driver @mode driver.get(url) sleep 2 data = driver.find_elements(:xpath, "//strong[@data-ppapi='room-price']") return { date: date, min_price: 0 } if data.empty? price = data.first.text.delete("^0-9").to_i hotel_name = "" room_name = "" hotel_name_element = driver.find_elements(:xpath, "//h1[@data-selenium='hotel-header-name']") hotel_name = hotel_name_element.first.text unless hotel_name_element.empty? room_name_element = driver.find_elements(:xpath, "//span[@data-selenium='masterroom-title-name']") room_name = room_name_element.first.text unless room_name_element.empty? { checkin_date: checkin_date, min_price: price, hotel_name: hotel_name, room_name: room_name } end |
#make_date_args(checkin_date) ⇒ Object
41 42 43 44 45 46 |
# File 'lib/hotel_price/agoda/agoda_scraper.rb', line 41 def make_date_args checkin_date Date.parse checkin_date rescue return "" t = Date.parse(checkin_date) checkin_arg = t.strftime("checkIn=%Y-%m-%d") "#{checkin_arg}&los=2" end |
#make_num_adults_arg(num_adults) ⇒ Object
48 49 50 51 |
# File 'lib/hotel_price/agoda/agoda_scraper.rb', line 48 def make_num_adults_arg num_adults return "" if num_adults.to_i <= 1 "adults=#{num_adults}" end |
#make_query_string(checkin_date, num_adults) ⇒ Object
35 36 37 38 39 |
# File 'lib/hotel_price/agoda/agoda_scraper.rb', line 35 def make_query_string(checkin_date, num_adults) cd_args = make_date_args checkin_date na_args = make_num_adults_arg num_adults "#{cd_args}&#{na_args}&rooms=1&travellerType=-1" end |