Как нажать кнопку на Yahoo Finance с помощью Selenium - PullRequest
0 голосов
/ 29 ноября 2018

Я пытался автоматически извлечь "квартальные" данные из финансовых отчетов по финансам Yahoo и не смог найти способ сделать это.Я думал, что смогу нажать кнопку «ежеквартально» на финансовой странице (https://finance.yahoo.com/quote/AAPL/financials?p=AAPL), но приведенный ниже код не работает. (Ничего не происходит). Не могли бы вы исправить код?

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome('c:/chromedriver/chromedriver.exe')
ticker_list = ["AAPL"]

for ticker in ticker_list:

    url = "https://finance.yahoo.com/quote/" + ticker + "/financials?p=" + ticker
    driver.get(url)
    wait = WebDriverWait(driver, 3600)
    wait.until(EC.presence_of_element_located((By.XPATH, '//button[text()="Quarterly"]')))
    driver.find_element_by_xpath('//button[text()="Quarterly"]').click

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Чтобы щелкнуть элемент с текстом как Ежеквартально , вам нужно настроить 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")
    driver = webdriver.Chrome(chrome_options=options, executable_path=r'C:\Utility\BrowserDrivers\chromedriver.exe')
    ticker_list = ["AAPL"]
    for ticker in ticker_list:
        url = "https://finance.yahoo.com/quote/{}/financials?p={}".format(ticker, ticker)
        driver.get(url)
        WebDriverWait(driver, 3600).until(EC.element_to_be_clickable((By.XPATH, "//section[@data-test='qsp-financial']//span[text()='Quarterly']"))).click()
    
0 голосов
/ 29 ноября 2018

Квартальный текст является частью тега span внутри элемента кнопки, поэтому не найден.Если вы измените свой XPath на //span[text()="Quarterly"], тогда это будет работать для меня

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...