Как очистить результат автоматического предложения Yahoo Search Selen Python? - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь использовать селен питон для автоматического поиска по финансам Yahoo. Когда я набираю какие-то слова, в Google будет появляться предложение, похожее на то же самое.

https://finance.yahoo.com/

Я обнаружил, что элементом списка с xpath должны быть предложения, сделанные yahoo:

//*[@id="search-assist-input"]/div[2]/ul

Кажется, содержание предложения скрыто в этом списке, но оно невидимо, я имею в виду, когда я нажимаю, чтобы развернуть его, оно просто исчезает. Я не знаю, есть ли в Firefox или Chrome какие-то «всегда разворачивающиеся узлы», но эти элементы кажутся очень труднодоступными. Я попытался получить все дочерние элементы под этот элемент, он показывает, что элемент не может быть найден:

from chrome_driver.chrome import Chrome

driver = Chrome().get_driver()
driver.get('https://finance.yahoo.com/')
driver.find_elements_by_xpath("//div[@id='search-assist-input']/div/input")[0].send_keys('goog')
x = driver.find_elements_by_xpath("//div[@data-reactid='56']/ul[@data-reactid='57']/*")

Как я могу получить эти автоматические предложения из окна поиска?

1 Ответ

0 голосов
/ 15 мая 2018

Для извлечения Авто Предложения относительно текста поиска, например. GOOG в поле поиска из https://finance.yahoo.com/ вам нужно вызвать WebDriverWait , чтобы автоматические предложения были видимыми , и вы можете использовать следующее решение:

  • Кодовый блок:

    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
    options = Options()
    options.add_argument("start-maximized")
    options.add_argument("disable-infobars")
    options.add_argument("--disable-extensions")
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\WebDrivers\ChromeDriver\chromedriver_win32\chromedriver.exe')
    driver.get('https://finance.yahoo.com/')
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@name='p']"))).send_keys("goog")
    yahoo_fin_auto_suggestions = WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//input[@name='p']//following::div[1]/ul//li")))
    for item in yahoo_fin_auto_suggestions :
        print(item.text)
    
  • Выход на консоль:

    GOOG
    Alphabet Inc.Equity - NASDAQ
    GOOGL
    Alphabet Inc.Equity - NASDAQ
    GOOGL-USD.SW
    AlphabetEquity - Swiss
    GOOGL180518C01080000
    GOOGL May 2018 call 1080.000Option - OPR
    GOOG.MX
    Alphabet Inc.Equity - Mexico
    GOOG180525C01075000
    GOOG May 2018 call 1075.000Option - OPR
    GOOG180518C00720000
    GOOG May 2018 call 720.000Option - OPR
    GOOGL180518C01120000
    GOOGL May 2018 call 1120.000Option - OPR
    GOOGL.MX
    Alphabet Inc.Equity - Mexico
    GOOGL190621C01500000
    GOOGL Jun 2019 call 1500.000Option - OPR
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...