首页 > 解决方案 > 如何使用 Selenium 在网站上获取实时股票价格?

问题描述

我正在开展一个学校项目,以获取摩根大通网站上的实时股票价格。我想获得所有显示的数据<div class="price_area">。我已经尝试过beautifulsoup 和yahoo api,但仍然无法得到我想要的。所以,这是我第一次尝试 selenium,但我不知道如何通过它运行 javascript。这是我的代码:

def getStockPrice():
    driver = webdriver.Chrome()
    driver.get("http://www.jpmhkwarrants.com/en_hk/market-statistics/underlying/underlying-terms/code/1")
    try:
        stock_index = WebDriverWait(driver, 10).until(
            driver.find_element_by_class_name('price_area').find_element_by_class_name('price')
        )
    finally:
        driver.quit()

但它显示错误“WebElement”不可调用。如何获得实时价格、百分比变化和开盘价。谢谢。

标签: javascriptpythonhtmlseleniumweb-scraping

解决方案


要使用你必须使用类似.find_element_by_*的功能WebDriverWaitlambda

stock_index = WebDriverWait(driver, 10).until(
     lambda d: d.find_element_by_class_name('price_area').find_element_by_class_name('price')
)

别忘了打电话.text来获取内容

def getStockPrice():
    driver = webdriver.Chrome()
    driver.get("http://www.jpmhkwarrants.com/en_hk/market-statistics/underlying/underlying-terms/code/0700")
    try:
        stock_index = WebDriverWait(driver, 10).until(
            lambda x: x.find_element_by_class_name('price_area')
        )
        price = stock_index.find_element_by_class_name('price')
        percentage = stock_index.find_element_by_css_selector('.percentage.rise')
        open_price = stock_index.find_element_by_css_selector('ul li span')

        print('Current price: ' + price.text)
        print('Percentage: ' + percentage.text)
        print('Open price: ' + open_price.text)

    except:
        print('wait timeout, element not found')
    finally:
        driver.quit()

推荐阅读