Использование Selenium в Python, создание веб-страниц с использованием элементов find по xpath, .text - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь автоматизировать задачу, которую я должен выполнять каждую неделю, используя Python и Selenium.

Я захожу на веб-сайт и, если есть какие-либо новые файлы, я загружаю их, переименовываю их, используя дату их поступления и информацию о том, к кому они обращались, а затем помещаю их в папку на общем сетевом сервере.

На веб-сайте указана дата поступления файла по кликабельной ссылке.

Используя поиск элементов по xpath и, как я полагаю, параметры, начинается с и содержит, я смог найти все ссылки с указанием даты и времени.

receivedTime = browser.find_elements_by_xpath('//*[starts-with(@id, 
"anchor") and contains(@id, "_0")]')
for time in receivedTime:
 print(time.text)

Вывод выглядит так, например, «2.11.2008, 8:00:50 AM».

Я бы хотел отформатировать этот текст, чтобы сказать «2018-11-02», как бы я поступил так?

Насколько я понимаю, переменная time является просто объектом Current Xpath, а .text является просто свойством этого объекта. Правильно ли мое понимание?

Спасибо.

ОТВЕТ:

receivedTime = browser.find_elements_by_xpath('//*[starts-with(@id, 
"anchor") and contains(@id, "_0")]')
for time in receivedTime:
 date = str(time.text).split(',')
 dateTime = datetime.strptime(date[0], '%m/%d/%Y').strftime('%Y-%m-%d-')
 print(dateTime)

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Вы также можете использовать регулярное выражение для извлечения чисел и переформатирования даты:

import re
text = "11/2/2018, 8:00:50 AM"
date_tuple = re.match("(\d+)\/(\d+)\/(\d+)", text).groups()
file_name = "%d-%02d-%02d" % (int(date_tuple[2]), int(date_tuple[0]), int(date_tuple[1]))

Результат: "2018-11-02"

0 голосов
/ 07 ноября 2018

Вы должны использовать пакет datetime (import datetime)
Переменная time является строкой, поэтому вам нужно преобразовать ее в datetime и изменить формат следующим образом:

date = str(time.text).split(',')
datetime.datetime.strptime(date[0], '%m/%d/%Y').strftime('%Y-%m-%d')
...