我想从amazon.com中提取一本书的星数。我试过用Xpath做的,但它显示错误: -
selenium.common.exceptions.NoSuchElementException:消息:没有这样的 element:无法定位元素: {"方法":"的xpath""选择器":" / HTML /体/格[4] / DIV / DIV 1 / DIV / DIV / DIV / DIV / DIV 1"}
如图所示,我想提取部分: - " 4.7颗星中有4颗" ,但由于它是可见性模式,我无法提取信息。
任何人都可以帮助我吗? 提前致谢
答案 0 :(得分:2)
当鼠标悬停在元素上时,将显示该元素。可能有一个AJAX查询。您需要执行鼠标悬停,然后在显示时捕获文本。
ActionChains
from selenium.webdriver.common.action_chains import ActionChains
element_to_hover = driver.find_element_by_xpath(...)
hover_action = ActionChains(driver).move_to_element(element_to_hover)
hover_action.perform()
(也许你需要在第2步和第3步之间time.sleep(1)
。)
修改强>
已经过测试并且有效:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
chrome_path = r"chromedriver.exe"
driver = webdriver.Chrome(chrome_path)
driver.get("https://www.amazon.com/s/ref=sr_pg_2?rh=n%3A133140011&page=1&sort=salesrank&unfiltered=1&ie=UTF8")
element_to_hover = driver.find_element_by_xpath("""//*[@id="result_0"]/div/div/div/div[2]/div[3]/div[2]/div/span/span/a/i[1]/span""")
hover_action = ActionChains(driver).move_to_element(element_to_hover)
hover_action.perform()
time.sleep(2)
stars_count = driver.find_element_by_xpath("""//*[@id="a-popover-content-3"]/div/div/div/div[1]/span""")
print stars_count.get_attribute('innerHTML')