我正在制作一个reddit机器人,该机器人将在注释中查找某些属性,使用硒访问信息网站,并用于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中提取文本,例如Lorem,Ipsum,Dolor,Sit,Amet等,您必须引入WebDriverWait,并且可以使用以下定位策略之一:<span>
visibility_of_all_elements_located()
使用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
和文字属性:
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.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句