【发布时间】:2020-11-17 00:23:38
【问题描述】:
我有一个网站,我正在使用 Selenium 从鼠标悬停框中提取信息,显示每个评论的相关信息。我能够让第一个正确,无论我如何尝试,我都无法在页面上循环以从所有人那里获取信息。任何人都可以知道我做错了什么。这是我的代码。
from lxml import html
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome(executable_path="YOUR PATH")
driver.implicitly_wait(15)
driver.get("https://www.depositaccounts.com/banks/reviews/chase-manhattan-bank.html")
#find all
data= driver.find_element_by_xpath("//div[contains(@class, 'bankReviewContainer')]/div[1]/div[3]/div[1]")
for i in data:
ActionChains(driver).move_to_element(i).perform()
time.sleep(2)
#print content of each box
hover_data=driver.find_element_by_xpath("//*[@class='popover fade right in']").get_attribute("innerHTML")
print ( hover_data)
driver.quit()```
【问题讨论】:
-
您的
data不是一个列表,而是一个单独的webElement。滴滴你的意思是data = driver.find_elements_by_xpath(...)? -
是的,很抱歉给您带来了困惑。它应该是 data = driver.find_elements_by_xpath(...)。
-
P.S.此外,最好将您的
data定义为driver.find_elements_by_class_name('stars1')。 -
将“元素”更改为“元素”后,它可以正常工作,直到第三个鼠标悬停框。显然,第 4 条评论中没有框,循环停止并给出错误。似乎我现在必须找到一种方法来处理丢失的鼠标悬停框。坦率地说,我不知道使用 find_elements_by_xpath 和 find_element_by_xpath 有什么区别。谢谢你的建议。
标签: python html selenium selenium-webdriver xpath