株価を分析して買い時の銘柄を見つけようと思い、日経新聞のサイトからスクレイピングをしてみました。無料で株価を提供するサイトは株式投資メモなど色々あるのですが、不定期更新のことが多いです。日経新聞のサイトは毎日ちゃんと更新されます。
まず、サイトをスクレイピングする際には色々とルールを守らないと犯罪になってしまいますが、日経新聞のrobots.txtとか利用規約をみる限りは個人利用の範囲なら問題なさそう(?)です。(ダメそうだったら教えてください)
pandasというモジュールのread_html()というメソッドを使うと秒でかけます。
import pandas as pd
def get_stock_prices(stock_number):
url = "https://www.nikkei.com/nkd/company/history/dprice/?scode={}&ba=1".format(stock_number)
headers = {
"User-Agent": "User-Agent情報"
}
dfs = pd.read_html(url)
for i in range(len(dfs)):
if "日付" in str(dfs[i]):
return dfs[i]
return False
User-Agent情報はこのサイトを開いたときに出てくる文字列をコピペして貼ればオッケーです。例えば僕の場合、Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36
でした。詳しく知りたい人はこちら。
stock_number
には数字四桁の株式銘柄コードを入れてください。例えば1301と入れると極洋という会社の株価ページのURLであるhttps://www.nikkei.com/nkd/company/history/dprice/?scode=1301&ba=1をスクレイピングします。銘柄コードはググっても簡単にわかると思いますし、東証のwebサイトからも一覧のEXCELファイルがダウンロードできます。
株価のwebページ内に余計なテーブルが存在することがあり、株価のテーブルだけを取得するため、for文を回して、"日付"という単語が入っているテーブルだけを返すようにしています。
以上です。