在 Python 中使用 Selenium,使用 xpath、.text 查找元素进行网络抓取
Using Selenium in Python, webscraping using find elements by xpath, .text
我正在尝试使用 Python 和 Selenium 自动执行每周必须执行的任务。
我访问一个网站,如果有任何新文件,我会下载它们,使用它们进入的日期和访问者重命名它们,然后将它们放在共享网络服务器上的一个文件夹中。
该网站通过可点击 link 提供了文件进入的日期。
使用 xpath 查找元素,我假设是参数,开始于并包含,我已经能够搜索带有日期和时间的所有 link。
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 只是当前 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)
您应该使用包 datetime (import datetime
)
time 变量是一个字符串,因此您必须将其转换为 datetime 并像这样更改格式:
date = str(time.text).split(',')
datetime.datetime.strptime(date[0], '%m/%d/%Y').strftime('%Y-%m-%d')
您还可以使用正则表达式提取数字并重新格式化日期:
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”
我正在尝试使用 Python 和 Selenium 自动执行每周必须执行的任务。
我访问一个网站,如果有任何新文件,我会下载它们,使用它们进入的日期和访问者重命名它们,然后将它们放在共享网络服务器上的一个文件夹中。
该网站通过可点击 link 提供了文件进入的日期。
使用 xpath 查找元素,我假设是参数,开始于并包含,我已经能够搜索带有日期和时间的所有 link。
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 只是当前 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)
您应该使用包 datetime (import datetime
)
time 变量是一个字符串,因此您必须将其转换为 datetime 并像这样更改格式:
date = str(time.text).split(',')
datetime.datetime.strptime(date[0], '%m/%d/%Y').strftime('%Y-%m-%d')
您还可以使用正则表达式提取数字并重新格式化日期:
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”