在python中使用selenium获取元素数组
我需要捕获一个元素列表:“要捕获的文本1”、“要捕获的文本2”。。。使用selenium和python抓取网页。 页面的HTML如下所示:在python中使用selenium获取元素数组,python,selenium,xpath,css-selectors,webdriverwait,Python,Selenium,Xpath,Css Selectors,Webdriverwait,我需要捕获一个元素列表:“要捕获的文本1”、“要捕获的文本2”。。。使用selenium和python抓取网页。 页面的HTML如下所示: <div class="contenedor" style="overflow:auto; padding: 6px;"> <div style="width: 75px;"> <p class="line1"> <a href="http://www.somelink
<div class="contenedor" style="overflow:auto; padding: 6px;">
<div style="width: 75px;">
<p class="line1">
<a href="http://www.somelink1.com/"><img src="https://www.somelink2.com" class="yborder" alt="Name"></a>
</p>
<p class="line1" style="align: center;">
<a href="www.somelink3.com" class="gensmall">TEXT TO CAPTURE 1</a>
</p>
</div>
<div style="width: 75px;">
<p class="line1">
<a href="www.somelink4.com"><img src="hwww.somelink5.com" class="yborder" alt="Dana Vespoli"></a>
</p>
<p class="line1" style="align: center;">
<a href="www.somelink6.com" class="gensmall">TEXT TO CAPTURE 2</a>
</p>
</div>
... others numbers of same <div> fields ....
</div>
感谢您的帮助与其使用
find\u element\u by\u xpath
方法,不如使用find\u elements
方法,该方法将为您提供多个元素
另外,您可以使用class=“gensmall”>
而不是Xpath来获取文本(如果该类存在于所有a
标记中)
看看这个
list_of_elements = driver.find_elements_by_css_selector('a. gensmall')
for i in len(list_of_elements):
print (i.text)
让我知道这是否有效。不要使用
find\u element\u by\u xpath
方法,而是使用find\u elements
方法,该方法将为您提供多个元素
另外,您可以使用class=“gensmall”>
而不是Xpath来获取文本(如果该类存在于所有a
标记中)
看看这个
list_of_elements = driver.find_elements_by_css_selector('a. gensmall')
for i in len(list_of_elements):
print (i.text)
让我知道这是否有效。要提取文本,例如,文本捕获1,文本捕获2等,您必须诱导WebDriverWait以实现所有元素的
可见性()
- 使用
CSS\u选择器
:
print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.contenedor p.line1>a.gensmall")))])
- 使用
XPATH
:
print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='contenedor']//p[@class='line1']/a[@class='gensmall']")))])
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
要提取文本,例如,文本捕获1,文本捕获2等,您必须诱导WebDriverWait,以实现所有元素的可见性()
- 使用
CSS\u选择器
:
print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "div.contenedor p.line1>a.gensmall")))])
- 使用
XPATH
:
print([my_elem.get_attribute("innerHTML") for my_elem in WebDriverWait(driver, 5).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='contenedor']//p[@class='line1']/a[@class='gensmall']")))])
- 注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
按类别名称(“gensmall”)查找元素
按类别名称(“gensmall”)查找元素