Pythonを使って最新の株式市場データを取得することは、分析的にも価格分析的にも素晴らしいユースケースシナリオを提供します。
この記事では、Pythonのseleniumを使用して株式市場のデータを取得する方法を学びます。
この記事では、NSE (National Stock Exchange of India) から BRITANNIA industries のデータを取得しますが、このコードは他の会社の名前を入力として受け取り、そのデータを同様に取得することができます。
あなたはまた好きかもしれません。
Pythonを使った株式市場データの取得
Pythonのseleniumを使用して株式市場のデータを取得する手順を始めましょう。
Pythonアプリケーション上でライブマーケットデータにアクセスするために、データを取得するための手順をループすることができます。
ステップ1 モジュールのインポート
まず始めに、selenium と webdriver (chrome) をインポートする必要があります。
import selenium 
from selenium import webdriver
 | 
ステップ2.入力を受け取る
ユーザーから会社の売買シンボル(ティッカーまたは銘柄)を入力として受け取り、変数に格納することにします。
company_name = input("Enter the company name: ")
 | 
ステップ3.Webdriverの初期化
まず、自動化したいWebブラウザのWebDriverをダウンロードする必要があります。
私の場合、Google Chromeと同じバージョンのchrome WebDriverをダウンロードしました。
また、ユーザーが会社名を入力したかどうかを確認します。
会社名が入力されていれば、WebDriverを初期化します。
if(company_name != ''):
    driver = webdriver.Chrome('C://software/chromedriver.exe')
 | 
WebDriverを初期化するために、ダウンロードしたWebDriverのコンピュータシステムでのパスを上記のように渡す必要があります。
ステップ4.ウェブサイトにアクセスする
Web サイトのスクレイピングを始める前に、まず Web サイトにアクセスする必要があります。
これは、get()メソッドを使って行うことができます。
文字列連結を使用して、NSEウェブサイトの株式データのベースURLに company_ampleの変数の値を追加しました。
これは、入力されたシンボルに応じた株式データを取得するために行います。
company_nameはINFY, TCS, ITC, RELIANCE, BRITANNIAなどであるが、有効な銘柄記号であることが必要です。
driver.get('https://www.nseindia.com/get-quotes/equity?symbol='+ company_name)
 | 
この記事では、Britanniaの株式データを持つウェブページにアクセスします。
ステップ5.スクラップしたい要素を探す
以下は、スクレイピングしたいBritanniaの現在の株式価値です。
そこで、ブラウザのinspectツールを使って、これらの値を検査し、そのHTML要素を見つけることにします。
<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>
 | 
NSEのウェブサイトからBRITANIAのシンボルに対して以下のようなHTMLコードを見つけました。
britania_stock = driver.find_elements_by_id('priceInfoTable')
 | 
検査した結果、すべての必要な値は、id名 – priceInfoTableにあることがわかりました。
そこで、get_element_by_id()メソッドを使用してこれらの値にアクセスすることにします。
id名priceInfoTableを渡す必要があります。
britania_list = []for p in range(len(britania_stock)):    britania_list.append(britania_stock[p].text)
 | 
ステップ6.スクレイピングされた情報をリストに保存する
ウェブページから何らかのデータをスクレイピングするとき、コードで作業していると常にそれを理解することはできません。
使いやすく、読みやすくするために、このデータをリストに格納することにします。
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=")
driver.quit() | 
このリストを印刷すると、すべての値が1つのリストの要素として返されます。
そこで、もう一つのforループを書き、これらの値を改行で表示することにします。
最後に、driver.quit() を使って、ブラウザーのウィンドウをすべて閉じます。
完全なコードは以下の通りです。

このコードの出力は次のようになります。


まとめ
他のWebサイトや暗号通貨のWebサイトでも同様の実験を行い、アプリのライブ価格を取得してみてください。
商業目的のスクレイピングは多くのウェブサイトのポリシーに反する可能性があり、このデータを個人的な用途にのみ使用することを確認する必要があることに注意してください。
この記事を楽しんでいただければ幸いです。
このようなチュートリアルをもっと見るには、http://askpython.com をフォローしてください。