在Python中使用Selenium,通过xpath、.text使用find元素进行webscraping

2024-04-27 04:34:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用Python和Selenium自动化每周必须完成的任务

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

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

使用xpath查找元素,我假设是参数,从开始和包含,我能够搜索所有带有日期和时间的链接

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

输出如下所示,例如,“2018年11月2日,上午8:00:50”

我想把这段文字的格式改为“2018-11-02”,我该怎么做呢

据我所知,变量time只是当前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)

Tags: 文件对象textbrowseridbytime网站
2条回答

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

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”

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

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

相关问题 更多 >