硒网络驱动程序 | find_elements return 只有一个结果
Selenium WebDriver | find_elements return only one result
我正在尝试使用 python 和 selenium webdriver 抓取 google 搜索结果,但无法弄清楚 find_elements[=23= 函数的原因] returns只有class中的一个元素([=26=中有多个h3元素,每个包含不同的标题)。
for element in driver.find_elements(by=By.XPATH, value='//*[@class="v7W49e"]'):
title = element.find_element(by=By.XPATH, value='//h3').text
print(title)
Link to Webpage Inspect
函数没有return任何错误,只是第一个结果的标题。
谢谢。
要在另一个元素中搜索元素,您应该使用以点开头的 XPath .
否则 Selenium 将 return 您是 DOM 中与传递的匹配的第一个元素定位器,在本例中为 //h3
。
因此,您的代码可以如下所示:
for element in driver.find_elements(by=By.XPATH, value='//*[@class="v7W49e"]'):
title = element.find_element(by=By.XPATH, value='.//h3').text
print(title)
UPD
那里只有一个元素匹配 //*[@class='v7W49e']
XPath 定位器,因此 driver.find_elements(by=By.XPATH, value='//*[@class="v7W49e"]')
将始终 return 你一个单一的网络元素。
您应该在那里使用 //*[@class='v7W49e']//h3
。
此代码将工作得更好。
它仍然不够好,因为并非所有匹配 //*[@class='v7W49e']//h3
XPath 定位器的元素都会有文本显示给您,但这会给您多个结果。
for element in driver.find_elements(by=By.XPATH, value='//*[@class="v7W49e"]//h3'):
title = element.text
print(title)
我正在尝试使用 python 和 selenium webdriver 抓取 google 搜索结果,但无法弄清楚 find_elements[=23= 函数的原因] returns只有class中的一个元素([=26=中有多个h3元素,每个包含不同的标题)。
for element in driver.find_elements(by=By.XPATH, value='//*[@class="v7W49e"]'):
title = element.find_element(by=By.XPATH, value='//h3').text
print(title)
Link to Webpage Inspect
函数没有return任何错误,只是第一个结果的标题。
谢谢。
要在另一个元素中搜索元素,您应该使用以点开头的 XPath .
否则 Selenium 将 return 您是 DOM 中与传递的匹配的第一个元素定位器,在本例中为 //h3
。
因此,您的代码可以如下所示:
for element in driver.find_elements(by=By.XPATH, value='//*[@class="v7W49e"]'):
title = element.find_element(by=By.XPATH, value='.//h3').text
print(title)
UPD
那里只有一个元素匹配 //*[@class='v7W49e']
XPath 定位器,因此 driver.find_elements(by=By.XPATH, value='//*[@class="v7W49e"]')
将始终 return 你一个单一的网络元素。
您应该在那里使用 //*[@class='v7W49e']//h3
。
此代码将工作得更好。
它仍然不够好,因为并非所有匹配 //*[@class='v7W49e']//h3
XPath 定位器的元素都会有文本显示给您,但这会给您多个结果。
for element in driver.find_elements(by=By.XPATH, value='//*[@class="v7W49e"]//h3'):
title = element.text
print(title)