如何使用Selenium Python获取股票市场数据

219 阅读3分钟

使用Python获得最新的股市数据,为分析和价格分析提供了一个很好的用例场景。在本教程中,我们将学习如何使用Python selenium获取股票市场数据。

在这个特定的教程中,我们将从NSE(印度国家证券交易所)获取BRITANNIA产业的数据,但我们的代码也可以将任何其他公司的名称作为输入并获取其数据。

使用Python获取股票市场数据

让我们开始使用Python selenium获取股票市场数据的步骤。你可以循环执行获取数据的步骤,以便在你的Python应用程序上直接获取实时市场数据。

步骤1.导入模块

首先,我们需要将selenium和webdriver(chrome)导入我们的代码中。

import selenium 
from selenium import webdriver

第2步.接受输入

我们将把公司的交易符号(股票代码或股票名称)作为输入,并将其存储在用户的一个变量中。

company_name = input("Enter the company name: ")

第3步.初始化Webdriver

首先,我们需要下载我们想要自动化的网络浏览器的WebDriver。

在我的例子中,我已经下载了与谷歌浏览器相同版本的chrome WebDriver。我们还将检查用户是否输入了公司名称。如果我们有一个公司名称,那么我们将初始化WebDriver。

if(company_name != ''):
    driver = webdriver.Chrome('C://software/chromedriver.exe')

为了初始化WebDriver,我们需要传递我们下载的WebDriver在我们的计算机系统中的路径,如上所示。

第四步.访问网站

在我们开始搜刮网站之前,我们首先需要访问该网站。我们可以在 get() 方法的帮助下做到这一点。通过使用字符串连接法,我们将公司名称变量的值添加到NSE网站上的股票数据的基本URL。

我们这样做是为了根据输入的符号来获取股票数据。公司名称可以是INFY、TCS、ITC、RELIANCE、BRITANNIA等,只要它是一个有效的股票符号。

driver.get('https://www.nseindia.com/get-quotes/equity?symbol='+ company_name)

在本教程中,我们要访问的网页上有Britannia的股票数据。

第5步.找到我们要搜刮的具体内容

下面是我们要搜刮的Britannia的当前股票价值。因此,我们将使用浏览器的检查工具检查这些数值,以找到其HTML元素。

我们需要抓取的股票的实时数据

我们从NSE网站上找到了下面的HTML代码,是关于BRITANIA符号的。

<table id="priceInfoTable">                                         
<td>Open</td> 
<td>Close*</td>                                                                
<td>title="Volume Weighted Average Price">VWAP</td>                                                                    
<td>Lower Band</td>                                                                    
<td>Upper Band</td>                                                                    
<td>Price Band</td>                                                                    
<tr><td style="">3,605.15</td>
<td>3,606.00</td>
<td>3,618.30</td>
<td>3,611.97</td>
<td>3,244.65</td>
<td>3,965.65</td>
<td>No Band</td>
</table>

经过检查,我们发现所有需要的值都在名为 priceInfoTable 的id中 所以我们将通过使用 get_element_by_id() 方法来访问这些值。我们需要传递id名称priceInfoTable。

britania_stock = driver.find_elements_by_id('priceInfoTable')

第6步:将搜刮到的信息存储在一个列表中

当我们从网页上刮取任何数据时,在使用代码时,你不一定能理解它。为了使其可用和可读,我们将把这些数据存储在一个列表中。

britania_list = []
for p in range(len(britania_stock)):
    britania_list.append(britania_stock[p].text)

当我们打印这个列表时,它将作为一个列表的单个元素返回所有的值。所以我们将再写一个for循环,在新的一行中打印这些值。

最后,我们使用driver.quit() - 这是一个关闭所有浏览器窗口的方法。

下面是完整的工作代码。

from selenium import webdriver
import time

company_name = input("Enter the stock name: ")

if(company_name != ''):

    driver = webdriver.Chrome('C://software/chromedriver.exe')
    driver.get('https://www.nseindia.com/get-quotes/equity?symbol='+ company_name)

    #to let the webpage load completely
    time.sleep(5) 

    britania_stock = driver.find_elements_by_id('priceInfoTable')

    britania_list = []
    for p in range(len(britania_stock)):
        britania_list.append(britania_stock[p].text)

    for i in britania_list:
        print(i,end="\n")

driver.quit()

结论

继续努力,在其他网站上做同样的实验,甚至可能是加密货币网站,为你的应用程序抓取实时价格。请注意,出于商业目的的搜刮可能违反许多网站的政策,你需要确保你的数据只用于个人用途。