В отсутствие большего количества HTML и / или URL, я надеюсь, что следующее полезно с логической точки зрения.Я выбрал веб-сайт с таблицей, в которой есть столбец цен (это замена даты и времени) и столбец с текстом для сопоставления.Надеюсь, моя попытка не будет оценена слишком резко.
Я обрисую шаги, которые, на мой взгляд, аналогичны вашей проблеме, т. Е.
- Используйте xpath, чтобы выбрать два списка, где один список *Элемент тега 1006 * соответствует тексту, а другой -
preceding::td[1]
.В вашем примере я думаю, что возможные пути xpath:
//a[text()="Job Created"]/preceding::td
//a[text()="Job Created"]
Вы берете текст из первого списка и относитесь к нему по мере необходимости.Вам понадобится функция для форматирования даты и времени, готовые к сортировке.Второй список хранится в виде элементов, поэтому позже можно будет нажать на него.Это предполагает, что ваши даты и время могут обрабатываться и сортироваться приемлемым образом.
Объедините их в один список кортежей, а затем отсортируйте по первому в каждом кортеже
Итак, набросок моего, по общему признанию, не идеального тематического исследования:
from selenium import webdriver
from operator import itemgetter
url ="https://www.wiseowl.co.uk/dax/london/"
driver = webdriver.Chrome()
driver.get(url)
#used title myDates although in my example I am using prices
myDates =[int(element.text.strip('£')) for element in driver.find_elements_by_xpath("//a[text() = 'Book places']/preceding::td[1]")]
myData = [element for element in driver.find_elements_by_xpath("//a[text() = 'Book places']")] #links in adjacent column
combined = list(zip(myDates,myData))
combined = sorted(combined,key=itemgetter(0), reverse=True) #sort list on first 'column'
combined[0][1].click() #click first in descending list
#other code
# driver.quit()