Class: HotelPrice::Jalan::JalanScraper
- Inherits:
-
Object
- Object
- HotelPrice::Jalan::JalanScraper
- Defined in:
- lib/hotel_price/jalan/jalan_scraper.rb
Instance Method Summary collapse
- #get_price(jalan_hotel_id, checkin_date, num_adults) ⇒ Object
-
#initialize(mode = :chrome) ⇒ JalanScraper
constructor
A new instance of JalanScraper.
- #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) ⇒ JalanScraper
Returns a new instance of JalanScraper.
5 6 7 |
# File 'lib/hotel_price/jalan/jalan_scraper.rb', line 5 def initialize(mode = :chrome) @mode = mode end |
Instance Method Details
#get_price(jalan_hotel_id, checkin_date, num_adults) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/hotel_price/jalan/jalan_scraper.rb', line 9 def get_price(jalan_hotel_id, checkin_date, num_adults) date = DateTime.now.strftime("%Y-%m-%d") query_string = make_query_string(checkin_date.to_s, num_adults) url = "https://www.jalan.net/yad#{jalan_hotel_id}/plan/?screenId=UWW3101&yadNo=#{jalan_hotel_id}&#{query_string}" driver = HotelPrice.get_selenium_driver @mode driver.get(url) sleep 2 @price_box = [] driver.find_elements(class_name: "p-planCassette").each do |f| rows = f.find_elements(:xpath, "//tr") rows.each do |e| @price_box << { date: date, min_price: e.find_element(class_name: "p-searchResultItem__total").text.delete("^0-9").to_i, hotel_name: driver.find_element(id: "yado_header_hotel_name").text, room_name: e.find_element(class_name: "p-searchResultItem__planName").text, plan_name: f.find_element(class_name: "p-planCassette__header").text } rescue StandardError { date: date, min_price: 0 } end end @price_box.sort_by { |_a, _b, c| c }.reverse.first || { date: date, min_price: 0 } rescue StandardError { date: date, min_price: 0 } end |
#make_date_args(checkin_date) ⇒ Object
43 44 45 46 |
# File 'lib/hotel_price/jalan/jalan_scraper.rb', line 43 def make_date_args checkin_date Date.parse checkin_date rescue return "" Date.parse(checkin_date).strftime("stayYear=%Y&stayMonth=%m&stayDay=%d") end |
#make_num_adults_arg(num_adults) ⇒ Object
48 49 50 51 |
# File 'lib/hotel_price/jalan/jalan_scraper.rb', line 48 def make_num_adults_arg num_adults return "" if num_adults.to_i < 1 "adultNum=#{num_adults}" end |
#make_query_string(checkin_date, num_adults) ⇒ Object
37 38 39 40 41 |
# File 'lib/hotel_price/jalan/jalan_scraper.rb', line 37 def make_query_string(checkin_date, num_adults) cd_args = make_date_args checkin_date na_args = make_num_adults_arg num_adults "rootCd=7701&callbackHistFlg=1&contHideFlg=1&reSearchFlg=1&roomCrack=100000&smlCd=121108&distCd=01&#{cd_args}&stayCount=1&roomCount=1&#{na_args}&minPrice=0&maxPrice=999999" end |