Amend Code - Website Scraping Python

Job ID: 36671542

Budget: $30 – $250 AUD

I am using pycharm and looking for someone to amend the following code so that it can scape the data from multiple URL's from the same website. The URL's are in the same/similar format. Then add in a formula (that divides two cells) and sorts the grouped data in the exported csv file (see attached file: Detailed Explanation on what I need the code to do.jpeg). The one csv is to include the data from all URL's (see attached file: Summary Spreadsheet csv file.jpeg).

This is the code that requires amending.

chrome_driver_path = 'Drivers/chromedriver.exe'
chrome_options = Options()
# chrome_options.add_argument('--incognito')
# chrome_options.add_argument("--headless")3
url = "https://www.xxxxxxxxxxxxxxxxxxxx.com"




driver = webdriver.Chrome(executable_path=chrome_driver_path, options=chrome_options)
driver.get(url)

runners = driver.find_elements_by_xpath("//div[@class='runner-name']")
time.sleep(3)
for i in range(len(runners)):
# print("Runner Name: " + str(runners[i].text))
runners[i].click()

time.sleep(10)

race_no = driver.find_element_by_class_name("race-number").text
location = driver.find_element_by_class_name("meeting-info-description").text
distance = driver.find_element_by_xpath("//li[@ng-if='race.raceDistance']").text

ages = []
wins_arr = []
places_arr = []
places = driver.find_elements_by_xpath("//*[@current-value='runner.displayFixedOddsPlace']")
wins = driver.find_elements_by_xpath("//*[@current-value='raceRunners.getDisplayWin(runner)']")

arr_temp = []
for idx_age in range(len(places)):
try:
values = driver.find_elements_by_class_name("form-details-list")[idx_age]
key_vals = values.find_elements_by_tag_name("li")
for idx_val in range(len(key_vals)):
arr_check = []
if str(key_vals[idx_val].find_element_by_class_name("key-span").text).__contains__("Type"):
# print(arr_save.__getitem__(idx_val))

arr_check.append(race_no)
arr_check.append(location)
arr_check.append(distance)
arr_check.append(key_vals[idx_val].find_element_by_class_name("value-span").text)
arr_check.append(wins[idx_age].text)
arr_check.append(places[idx_age].text)
arr_temp.append(arr_check)
except:
print("Skip Index: " + str(idx_age))

tables = driver.find_elements_by_class_name("flexible-table")
arr_save = []
header_array: list[Union[str, Any]] = []
for k in range(len(tables)):
rows = tables[k].find_elements_by_class_name("flexible-row")
for j in range(len(rows)):
if len(header_array) == 0 & j == 0:
headers = rows[j].find_elements_by_class_name("flexible-cell")
for m in range(len(headers)):
# print(headers[m].text)
header_array.append(headers[m].text)

header_array.append("Race No.")
header_array.append("Location")
header_array.append("Distance")
header_array.append("Age")
header_array.append("Win")
header_array.append("Places")
if j > 0:
arr_row = []
columns = rows[j].find_elements_by_class_name("flexible-cell")
for m in range(len(columns)):
# print(columns[m].text)

if m == 12:
arr_row.append(runners[k].text)
else:
arr_row.append(columns[m].text)

for idx_temp in range(len(arr_temp[k])):
arr_row.append(arr_temp[k][idx_temp])
arr_save.append(arr_row)

print("INDEX:" + str(k))


df2 = pd.DataFrame(np.array(arr_save), columns=header_array)


file_name = str(round(time.time() * 1000))

df2.to_csv(file_name + ".csv")
driver.close()
driver.quit()