2017-07-29 81 views
1

我想提取一個書從amazon.com得到的星星數量。我試圖通過Xpath的這樣做,但它顯示了錯誤: -如何提取處於隱藏可見性模式的文本?

selenium.common.exceptions.NoSuchElementException:消息:沒有這樣 元件:無法找到元素: { 「方法」: 「的xpath」, 「選擇」: 「/ HTML /體/格[4]/DIV/DIV 1/DIV/DIV/DIV/DIV/DIV 1」}

像如圖圖像I要提取的部分: - 「4.7星滿分」,但由於它是可見性模式,我無法提取信息。

任何人都可以幫我嗎?
預先感謝

enter image description here

+1

您是否嘗試過使用的擴展,爲你在頁面上的元素的XPath表達式? –

+0

是的,我使用的是Firebug,它給出了Xpath –

+0

首先用你的硒代碼點擊下來的箭頭,並使其可見 –

回答

1

正在示出的元件,當鼠標懸停在元件。可能帶有AJAX查詢。您需要執行鼠標懸停,然後在顯示時捕捉文本。

  1. 爲此需要導入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()

    1. 元素一旦顯示,您只需通過xpath找到您的文本元素。

    (也許你需要time.sleep(1)步驟2和3之間)

    編輯

    已經測試和它的工作原理:

    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') 
    
    相關問題