在Python中使用Selenium,通过xpath,.text使用find元素进行网络封装

时间:2018-11-07 13:37:11

标签: python selenium selenium-webdriver formatting string-formatting

我正在尝试使用Python和Selenium自动执行每周必须执行的任务。

我转到一个网站,如果有任何新文件,我会下载它们,使用它们进入的日期和去向谁来重命名它们,然后将它们放在共享网络服务器上的文件夹中。

网站通过可单击的链接提供文件进入的日期。

使用xpath的find元素(我假设是参数)开始和包含,我已经能够搜索所有带有日期和时间的链接。

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

输出看起来像这样,例如“ 11/2/2018,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 :(得分:2)

您应该使用软件包datetimeimport datetime
time 变量是一个字符串,因此您必须将其转换为 datetime 并更改格式,如下所示:

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

答案 1 :(得分:0)

您还可以使用正则表达式提取数字并重新设置日期格式:

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”