[英]How do i iterate through a webelements list with Python and Selenium?
[英]How to iterate through webelements to extract text from HTML tags in Selenium Web Automation (Python)?
我正在制作一个 reddit bot,它将在评论中查找某些属性,使用 selenium 访问信息网站,并使用driver.find_elements_by...
获取这些标签中的值。
现在, driver.find_elements_by...
不可迭代,并且有多个<span class="name">Lorem Ipsum</span>
标签,其中包含我想要获取的文本。 我将其存储为变量并通过 PRAW 回复评论。
假设 HTML 是这样的:
<span class="name">Lorem</span>
<span class="name">Ipsum</span>
<span class="name">Dolor</span>
<span class="name">Sit</span>
<span class="name">Amet</span>
那么,我如何从所有<span class="name">
标签中获取文本,当我将其存储为变量并回复时,它是将所有文本放在一起而不带空格还是将其格式化为每个文本之间的空间,假设我写:
tags = driver.find_element_by...
comment.reply("Tags: {}".format(tags))
如果它只是将所有文本放在一起,我该如何格式化它以便有空格?
要使用Selenium和python从所有<span>
提取文本,例如Lorem 、 Ipsum 、 Dolor 、 Sit 、 Amet等,您必须为visibility_of_all_elements_located()
引入WebDriverWait ,您可以使用以下任一定位器策略:
使用CSS_SELECTOR
和get_attribute("innerHTML")
:
print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "span.name")))])
使用XPATH
和text属性:
print([my_elem.text for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//span[@class='name']")))])
控制台输出:
['Lorem', 'Ipsum', 'Dolor', 'Sit', 'Amet']
注意:这是字符串类型列表,您可以根据需要进行操作。
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
链接到有用的文档:
get_attribute()
方法Gets the given attribute or property of the element.
text
属性返回The text of the element.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.