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