Jun-04-2024, 05:51 PM
Hello,
I have the following code which pulls data from the web (Booking.com). Does anyone know how to add code to it which would run it every day at a specific time, say 09:00?
Many thanks in advance.
I have the following code which pulls data from the web (Booking.com). Does anyone know how to add code to it which would run it every day at a specific time, say 09:00?
Many thanks in advance.
import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException
import time
from selenium.webdriver.support.ui import WebDriverWait
import numpy as np
from selenium.webdriver.support import expected_conditions as EC
from datetime import datetime
from datetime import timedelta
TodaysDate = time.strftime("%Y-%m-%d")
Startdate = (datetime.now() + timedelta(days=0) ).strftime('%Y-%m-%d')
Enddate = (datetime.now() + timedelta(days=1) ).strftime('%Y-%m-%d')
driver = webdriver.Chrome()
list=["https://www.booking.com/hotel/gb/clayton-hotel-cardiff.html?aid=304142&label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYATG4ARfIAQzYAQHoAQH4AQKIAgGoAgO4At_V07EGwAIB0gIkZmRhNGVhYzMtYTQ2Mi00OGQxLWEyNmEtYjgzYWEzNjg0ZmIw2AIF4AIB&sid=ec1eae1807c6ef490266327d6508f518&all_sr_blocks=29091610_91471356_2_2_0;checkin=" + Startdate + ";checkout=" + Enddate + ";dest_id=1233;dest_type=district;dist=0;group_adults=2;group_children=0;hapos=5;highlighted_blocks=29091610_91471356_2_2_0;hpos=5;matching_block_id=29091610_91471356_2_2_0;no_rooms=1;req_adults=2;req_children=0;room1=A%2CA;sb_price_type=total;sr_order=popularity;sr_pri_blocks=29091610_91471356_2_2_0__8910;srepoch=1714744083;srpvid=49fd6104516f02ba;type=total;ucfs=1&#hotelTmpl/",
"https://www.booking.com/hotel/gb/cardiffparkplaza.html?aid=304142&label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYATG4ARfIAQzYAQHoAQH4AQKIAgGoAgO4At_V07EGwAIB0gIkZmRhNGVhYzMtYTQ2Mi00OGQxLWEyNmEtYjgzYWEzNjg0ZmIw2AIF4AIB&sid=ec1eae1807c6ef490266327d6508f518&all_sr_blocks=22664804_331143887_2_2_0;checkin=" + Startdate + ";checkout=" + Enddate + ";dest_id=1233;dest_type=district;dist=0;group_adults=2;group_children=0;hapos=6;highlighted_blocks=22664804_331143887_2_2_0;hpos=6;matching_block_id=22664804_331143887_2_2_0;no_rooms=1;req_adults=2;req_children=0;room1=A%2CA;sb_price_type=total;sr_order=popularity;sr_pri_blocks=22664804_331143887_2_2_0__11500;srepoch=1714744260;srpvid=49fd6104516f02ba;type=total;ucfs=1&#hotelTmpl/",
"https://www.booking.com/hotel/gb/radisson-blu.en-gb.html?aid=304142&label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYAQm4ARjIAQzYAQHoAQH4AQuIAgGoAgS4AsDf7rEGwAIB0gIkYmQ3ZjQ4ZjktNDE5Yy00ZmY1LThjMjktYTFhMGM0MmNjMGI22AIG4AIB&sid=93afbcb22bab72120df44694d6dc40f0&all_sr_blocks=4611414_380875172_2_2_0;checkin=" + Startdate + ";checkout=" + Enddate + ";dest_id=1233;dest_type=district;dist=0;group_adults=2;group_children=0;hapos=6;highlighted_blocks=4611414_380875172_2_2_0;hpos=6;matching_block_id=4611414_380875172_2_2_0;no_rooms=1;req_adults=2;req_children=0;room1=A%2CA;sb_price_type=total;sr_order=popularity;sr_pri_blocks=4611414_380875172_2_2_0__12500;srepoch=1715187672;srpvid=752677a88d430184;type=total;ucfs=1&#hotelTmpl/",
"https://www.booking.com/hotel/gb/indigo-cardiff.en-gb.html?aid=304142&label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYAQm4ARjIAQzYAQHoAQH4AQuIAgGoAgS4AsDf7rEGwAIB0gIkYmQ3ZjQ4ZjktNDE5Yy00ZmY1LThjMjktYTFhMGM0MmNjMGI22AIG4AIB&sid=93afbcb22bab72120df44694d6dc40f0&all_sr_blocks=234837705_244371218_2_2_0;checkin=" + Startdate + ";checkout" + Enddate + ";dest_id=1233;dest_type=district;dist=0;group_adults=2;group_children=0;hapos=9;highlighted_blocks=234837705_244371218_2_2_0;hpos=9;matching_block_id=234837705_244371218_2_2_0;no_rooms=1;req_adults=2;req_children=0;room1=A%2CA;sb_price_type=total;sr_order=popularity;sr_pri_blocks=234837705_244371218_2_2_0__12060;srepoch=1715195119;srpvid=752677a88d430184;type=total;ucfs=1&#hotelTmpl/",
"https://www.booking.com/hotel/gb/parkgate-cardiff.en-gb.html?label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYAQm4ARjIAQzYAQHoAQH4AQuIAgGoAgS4AsDf7rEGwAIB0gIkYmQ3ZjQ4ZjktNDE5Yy00ZmY1LThjMjktYTFhMGM0MmNjMGI22AIG4AIB&sid=93afbcb22bab72120df44694d6dc40f0&aid=304142&ucfs=1&arphpl=1&checkin=" + Startdate + "&checkout=" + Enddate + "&dest_id=1233&dest_type=district&group_adults=2&req_adults=2&no_rooms=1&group_children=0&req_children=0&hpos=12&hapos=12&sr_order=popularity&srpvid=752677a88d430184&srepoch=1715195223&all_sr_blocks=724073602_310086127_2_2_0&highlighted_blocks=724073602_310086127_2_2_0&matching_block_id=724073602_310086127_2_2_0&sr_pri_blocks=724073602_310086127_2_2_0__16400&from_sustainable_property_sr=1&from=searchresults#hotelTmpl/",
"https://www.booking.com/hotel/gb/macdonaldhollandhouse.html?aid=304142&label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYATG4ARfIAQzYAQHoAQH4AQKIAgGoAgO4At_V07EGwAIB0gIkZmRhNGVhYzMtYTQ2Mi00OGQxLWEyNmEtYjgzYWEzNjg0ZmIw2AIF4AIB&sid=ec1eae1807c6ef490266327d6508f518&all_sr_blocks=22241114_95454762_2_42_0;checkin=" + Startdate + ";checkout=" + Enddate + ";dest_id=1233;dest_type=district;dist=0;group_adults=2;group_children=0;hapos=12;highlighted_blocks=22241114_95454762_2_42_0;hpos=12;matching_block_id=22241114_95454762_2_42_0;no_rooms=1;req_adults=2;req_children=0;room1=A%2CA;sb_price_type=total;sr_order=popularity;sr_pri_blocks=22241114_95454762_2_42_0__9900;srepoch=1714744853;srpvid=49fd6104516f02ba;type=total;ucfs=1&#hotelTmpl/",
"https://www.booking.com/hotel/gb/holiday-inn-cardiff-city.en-gb.html?label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYAQm4ARjIAQzYAQHoAQH4AQuIAgGoAgS4AsDf7rEGwAIB0gIkYmQ3ZjQ4ZjktNDE5Yy00ZmY1LThjMjktYTFhMGM0MmNjMGI22AIG4AIB&sid=93afbcb22bab72120df44694d6dc40f0&aid=304142&ucfs=1&arphpl=1&checkin=" + Startdate + "&checkout=" + Enddate + "&dest_id=1233&dest_type=district&group_adults=2&req_adults=2&no_rooms=1&group_children=0&req_children=0&hpos=11&hapos=11&sr_order=popularity&srpvid=0b22868a538e0117&srepoch=1715195307&all_sr_blocks=3419103_244944025_2_2_0&highlighted_blocks=3419103_244944025_2_2_0&matching_block_id=3419103_244944025_2_2_0&sr_pri_blocks=3419103_244944025_2_2_0__10900&from_sustainable_property_sr=1&from=searchresults#hotelTmpl/",
"https://www.booking.com/hotel/gb/park-inn-cardiff-city-centre.en-gb.html?label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYAQm4ARjIAQzYAQHoAQH4AQuIAgGoAgS4AsDf7rEGwAIB0gIkYmQ3ZjQ4ZjktNDE5Yy00ZmY1LThjMjktYTFhMGM0MmNjMGI22AIG4AIB&sid=93afbcb22bab72120df44694d6dc40f0&aid=304142&ucfs=1&arphpl=1&checkin=" + Startdate + "&checkout=" + Enddate + "&dest_id=1233&dest_type=district&group_adults=2&req_adults=2&no_rooms=1&group_children=0&req_children=0&hpos=2&hapos=2&sr_order=popularity&srpvid=0b22868a538e0117&srepoch=1715195349&all_sr_blocks=3616318_338890992_2_2_0&highlighted_blocks=3616318_338890992_2_2_0&matching_block_id=3616318_338890992_2_2_0&sr_pri_blocks=3616318_338890992_2_2_0__8280&from_sustainable_property_sr=1&from=searchresults#hotelTmpl/",
"https://www.booking.com/hotel/gb/cardiff-marriott.en-gb.html?label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYAQm4ARjIAQzYAQHoAQH4AQuIAgGoAgS4AsDf7rEGwAIB0gIkYmQ3ZjQ4ZjktNDE5Yy00ZmY1LThjMjktYTFhMGM0MmNjMGI22AIG4AIB&sid=93afbcb22bab72120df44694d6dc40f0&aid=304142&ucfs=1&arphpl=1&checkin=" + Startdate + "&checkout=" + Enddate + "&dest_id=1233&dest_type=district&group_adults=2&req_adults=2&no_rooms=1&group_children=0&req_children=0&hpos=4&hapos=4&sr_order=popularity&srpvid=85f186cb22c10193&srepoch=1715195419&all_sr_blocks=3687806_246419015_0_2_0&highlighted_blocks=3687806_246419015_0_2_0&matching_block_id=3687806_246419015_0_2_0&sr_pri_blocks=3687806_246419015_0_2_0__11000&from_sustainable_property_sr=1&from=searchresults#hotelTmpl/",
"https://www.booking.com/hotel/gb/hanoverinternationalcardiff.en-gb.html?aid=304142&label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYATG4ARfIAQzYAQHoAQH4AQKIAgGoAgO4At_V07EGwAIB0gIkZmRhNGVhYzMtYTQ2Mi00OGQxLWEyNmEtYjgzYWEzNjg0ZmIw2AIF4AIB&sid=93afbcb22bab72120df44694d6dc40f0&all_sr_blocks=21752512_94349799_2_42_0&checkin=" + Startdate + "&checkout=" + Enddate + "&dest_id=1233&dest_type=district&dist=0&group_adults=2&group_children=0&hapos=16&highlighted_blocks=21752512_94349799_2_42_0&hpos=16&keep_landing=1&matching_block_id=21752512_94349799_2_42_0&no_rooms=1&req_adults=2&req_children=0&sb_price_type=total&sr_order=popularity&sr_pri_blocks=21752512_94349799_2_42_0__10028&srepoch=1714744962&srpvid=49fd6104516f02ba&type=total&ucfs=1&#hotelTmpl/",
"https://www.booking.com/hotel/gb/leonardo-hotel-cardiff.html?label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYATG4ARfIAQzYAQHoAQH4AQKIAgGoAgO4At_V07EGwAIB0gIkZmRhNGVhYzMtYTQ2Mi00OGQxLWEyNmEtYjgzYWEzNjg0ZmIw2AIF4AIB&aid=304142&ucfs=1&arphpl=1&checkin=" + Startdate + ";checkout=" + Enddate + "&dest_id=1233&dest_type=district&group_adults=2&req_adults=2&no_rooms=1&group_children=0&req_children=0&hpos=17&hapos=17&sr_order=popularity&srpvid=49fd6104516f02ba&srepoch=1714744987&all_sr_blocks=3633717_95158809_0_2_0&highlighted_blocks=3633717_95158809_0_2_0&matching_block_id=3633717_95158809_0_2_0&sr_pri_blocks=3633717_95158809_0_2_0__10530&from_sustainable_property_sr=1&from=searchresults#hotelTmpl/",
"https://www.booking.com/hotel/gb/hilton-cardiff.en-gb.html?aid=304142&label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYAQm4ARjIAQzYAQHoAQH4AQuIAgGoAgS4AtbH6bEGwAIB0gIkZjJkN2ZlMmUtOGZmYS00NGEyLTllYzQtZjYyZjgxNjI1MTNl2AIG4AIB&sid=93afbcb22bab72120df44694d6dc40f0&all_sr_blocks=3387110_246006931_2_34_0;checkin=" + Startdate + ";checkout=" + Enddate + ";dest_id=1233;dest_type=district;dist=0;group_adults=2;group_children=0;hapos=1;highlighted_blocks=3387110_246006931_2_34_0;hpos=1;matching_block_id=3387110_246006931_2_34_0;no_rooms=1;req_adults=2;req_children=0;room1=A%2CA;sb_price_type=total;sr_order=popularity;sr_pri_blocks=3387110_246006931_2_34_0__10900;srepoch=1715103321;srpvid=54987baa66de01b8;type=total;ucfs=1&#hotelTmpl/",
"https://www.booking.com/hotel/gb/macdonaldhollandhouse.en-gb.html?aid=304142&label=gen173nr-1FCAEoggI46AdIM1gEaFCIAQGYAQm4ARjIAQzYAQHoAQH4AQuIAgGoAgS4AtbH6bEGwAIB0gIkZjJkN2ZlMmUtOGZmYS00NGEyLTllYzQtZjYyZjgxNjI1MTNl2AIG4AIB&sid=93afbcb22bab72120df44694d6dc40f0&all_sr_blocks=22241109_95454762_2_42_0;checkin=" + Startdate + ";checkout=" + Enddate + ";dest_id=1233;dest_type=district;dist=0;group_adults=2;group_children=0;hapos=22;highlighted_blocks=22241109_95454762_2_42_0;hpos=22;matching_block_id=22241109_95454762_2_42_0;no_rooms=1;req_adults=2;req_children=0;room1=A%2CA;sb_price_type=total;sr_order=popularity;sr_pri_blocks=22241109_95454762_2_42_0__48900;srepoch=1715103426;srpvid=54987baa66de01b8;type=total;ucfs=1&#hotelTmpl/",
]
all_dates = []
all_prices = []
all_hotel_names = []
for url in list:
driver.get(url)
time.sleep(6)
driver.execute_script("window.scrollTo(0, document.body.scrollHeight)")
time.sleep(6)
data = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, '(//button[@data-testid="date-display-field-start"])[2]')))
data.click()
time.sleep(6)
hotel_name=driver.find_element(By.XPATH, '//h2[@class="d2fee87262 pp-header__title"]')
hotel_name=hotel_name.text
while True:
dates = [date.get_attribute('aria-label') for date in driver.find_elements(By.XPATH, '//span[@class="cf06f772fa ef091eb985 b6f813c05a"]')]
prices = [price.text for price in driver.find_elements(By.XPATH, '//span[@class="cf06f772fa ef091eb985 b6f813c05a"]//div/span')]
all_hotel_names.extend([hotel_name] * len(prices))
all_dates.extend(dates)
all_prices.extend(prices)
try:
next_month_button = driver.find_element(By.XPATH, '//button[@aria-label="Next month"]')
if next_month_button.is_enabled():
next_month_button.click()
time.sleep(4)
else:
break
except NoSuchElementException:
break
time.sleep(4)
excelfilename = TodaysDate +".xlsx"
df = pd.DataFrame({'Hotel Name': all_hotel_names, 'Check-in': all_dates, 'Price': all_prices})
df["Price"] = df["Price"].replace("—", np.nan, regex=True)
df=df.dropna(subset="Price")
df["Check-in"]=pd.to_datetime(df["Check-in"])
df["Checkout"] = df["Check-in"] + pd.Timedelta(days=1)
print(df)
df.to_excel(excelfilename, index=False)
driver.quit()
[python][/python]
