当我将鼠标悬停在元素上时,如何抓取出现的文本?
How do I scrape the text that appears when I hover over the element?
所以在电子商务网页 (https://www.jooraccess.com/r/products?token=feba69103f6c9789270a1412954cf250) 上,当我将鼠标悬停在它上面时会显示产品的颜色名称,我能够确定 HTML 代码中的新行是什么当我悬停时出现,但我不知道如何抓取文本('NAVY')。
<div class="ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ" style="position: absolute; inset: auto auto -7494px 378px;">NAVY</div>
driver.get("https://www.jooraccess.com/r/products?token=feba69103f6c9789270a1412954cf250")
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='Swatch_swatch__2X1CY']")))
for el in elements:
ActionChains(driver).move_to_element(el).perform()
mouseover = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ'")))
print(mouseover)
我已经检查了你的 code.Your xpath
表达式对于工具提示元素来说似乎是错误的。
我已经改变了它并且还获得了你需要的文本值 print(element.text)
driver.get("https://www.jooraccess.com/r/products?token=feba69103f6c9789270a1412954cf250")
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='Swatch_swatch__2X1CY']")))
for el in elements:
ActionChains(driver).move_to_element(el).perform()
mouseover = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ']")))
print(mouseover.text)
在我的终端上输出。
出于某种原因,我无法让您的网站与我正在使用的平台一起使用,但我设法创建了一个示例。我建议使用 Actions 库并使用它移动到有问题的元素。
ActionChains(self.driver).move_to_element(self.driver.find_element(By.XPATH, "//a[@class='dropdown-toggle']")).perform()
这适用于我正在使用的网站,但如果您更改自己元素的 xpath,它应该可以工作。驱动程序完成此操作后,您可以通过悬停找到您想要显示的元素。您应该可以将其放入 for 循环中,一切顺利。
我做了一个可运行的例子here
这是我在看到这里的答案之前得出的解决方案:
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='Swatch_swatch__2X1CY']")))
for el in elements:
ActionChains(driver).move_to_element(el).perform()
page = BeautifulSoup(driver.page_source, features='html.parser')
print(page.find("div", class_="ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ").text)
所以在电子商务网页 (https://www.jooraccess.com/r/products?token=feba69103f6c9789270a1412954cf250) 上,当我将鼠标悬停在它上面时会显示产品的颜色名称,我能够确定 HTML 代码中的新行是什么当我悬停时出现,但我不知道如何抓取文本('NAVY')。
<div class="ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ" style="position: absolute; inset: auto auto -7494px 378px;">NAVY</div>
driver.get("https://www.jooraccess.com/r/products?token=feba69103f6c9789270a1412954cf250")
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='Swatch_swatch__2X1CY']")))
for el in elements:
ActionChains(driver).move_to_element(el).perform()
mouseover = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ'")))
print(mouseover)
我已经检查了你的 code.Your xpath
表达式对于工具提示元素来说似乎是错误的。
我已经改变了它并且还获得了你需要的文本值 print(element.text)
driver.get("https://www.jooraccess.com/r/products?token=feba69103f6c9789270a1412954cf250")
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='Swatch_swatch__2X1CY']")))
for el in elements:
ActionChains(driver).move_to_element(el).perform()
mouseover = WebDriverWait(driver, 30).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ']")))
print(mouseover.text)
在我的终端上输出。
出于某种原因,我无法让您的网站与我正在使用的平台一起使用,但我设法创建了一个示例。我建议使用 Actions 库并使用它移动到有问题的元素。
ActionChains(self.driver).move_to_element(self.driver.find_element(By.XPATH, "//a[@class='dropdown-toggle']")).perform()
这适用于我正在使用的网站,但如果您更改自己元素的 xpath,它应该可以工作。驱动程序完成此操作后,您可以通过悬停找到您想要显示的元素。您应该可以将其放入 for 循环中,一切顺利。
我做了一个可运行的例子here
这是我在看到这里的答案之前得出的解决方案:
elements = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='Swatch_swatch__2X1CY']")))
for el in elements:
ActionChains(driver).move_to_element(el).perform()
page = BeautifulSoup(driver.page_source, features='html.parser')
print(page.find("div", class_="ui top left popup transition visible Tooltip_Tooltip__M0LJL Tooltip_black__heZoQ").text)