如何遍历 Webelements 以从 Selenium Web Automation (Python) 中的 HTML 标签中提取文本?
How to iterate through webelements to extract text from HTML tags in Selenium Web Automation (Python)?
我正在制作一个 reddit 机器人,它将在评论中查找某些属性,使用 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">
标签中获取文本,当我将其存储为变量并回复时,它是否会在没有 space 的情况下将所有文本放在一起或者它会在每个文本之间用 space 格式化它,假设我写:
tags = driver.find_element_by...
comment.reply("Tags: {}".format(tags))
如果它只是把所有的文本放在一起,我怎样才能格式化它以便有 spaces?
提取文本,例如Lorem, Ipsum, Dolor, Sit, Amet,等等来自所有 <span>
使用 and python you have to induce for visibility_of_all_elements_located()
and you can use either of the following :
使用 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']
Note: This is list of type string and you can manipulate according to your requirement.
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
结尾
Link 到有用的文档:
get_attribute()
方法Gets the given attribute or property of the element.
text
属性returnsThe text of the element.
- Difference between text and innerHTML using Selenium
我正在制作一个 reddit 机器人,它将在评论中查找某些属性,使用 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">
标签中获取文本,当我将其存储为变量并回复时,它是否会在没有 space 的情况下将所有文本放在一起或者它会在每个文本之间用 space 格式化它,假设我写:
tags = driver.find_element_by...
comment.reply("Tags: {}".format(tags))
如果它只是把所有的文本放在一起,我怎样才能格式化它以便有 spaces?
提取文本,例如Lorem, Ipsum, Dolor, Sit, Amet,等等来自所有 <span>
使用 visibility_of_all_elements_located()
and you can use either of the following
使用
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']
Note: This is list of type string and you can manipulate according to your requirement.
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC
结尾
Link 到有用的文档:
get_attribute()
方法Gets the given attribute or property of the element.
text
属性returnsThe text of the element.
- Difference between text and innerHTML using Selenium