如何使用Python的Selenium库提取time标签内的完整文本内容
问题原因
带有say-no-more类的span元素被CSS设置为不可见,Selenium的text属性仅会返回元素内的可见文本,因此丢失了年份部分。
解决方案
方案1:读取time标签的datetime属性(最优解)
符合HTML规范的time标签默认会携带datetime属性存储完整的标准化日期,直接读取该属性即可直接获得目标格式的完整日期:
event_times = driver.find_elements(By.CSS_SELECTOR, value=".event-widget time") for time in event_times: print(time.get_attribute("datetime"))
无需额外做字符串处理,输出结果就是2021-11-13这类完整日期。
方案2:读取DOM的textContent属性
如果遇到无datetime属性的特殊场景,可以读取DOM原生的textContent属性,该属性会返回元素内所有文本内容,不受可见性限制:
event_times = driver.find_elements(By.CSS_SELECTOR, value=".event-widget time") for time in event_times: print(time.get_attribute("textContent").strip())
同样可以直接拿到拼接完成的完整日期,无需分别提取不同节点的内容。
内容的提问来源于stack exchange,提问作者BenRavenne
相关产品推荐
相关产品推荐

