Webスクレイビングして株価を取得する

Pythonを勉強中。

今日はk-dbのサイトから指定した銘柄の最新250日分の株価情報を取得し、テキストファイルに書き込むコードを書いてみた。

いわゆるWebスクレイビングというやつ。

ここではソフトバンクの株価情報を取得している。

def get_kabu(nm="9984"):
    import requests, bs4
    source = requests.get("http://k-db.com/stocks/{}-T".format(nm))
    file = open("{}_k_data.txt".format(nm),"w")
    file.write("")
    file.close()
    soup = bs4.BeautifulSoup(source.text, "html.parser")
    for i in soup.findAll("td"):
        file = open("{}_k_data.txt".format(nm),"a")
        kabu_data = str(i.string)+"\n"
        file.write(kabu_data)
        file.flush()
    file.close()

get_kabu()



なんとか、うまく動いてくれた。

以下、復習がてらざっくりとそれぞれの部分を振り返ってみる。

①まずは関数の引数として渡した銘柄番号を使ってk-db.comにアクセス。

source = requests.get("http://k-db.com/stocks/{}-T".format(nm))

②以下で取得した情報を書き込むテキストファイルを準備

file = open("{}_k_data.txt".format(nm),"w")
file.write("")
file.close()

③次にBeautifulSoupを使って、"td"タグ内の文字列を取得し、kabu_dataという変数に代入。これをソースの"td"タグ分繰り返す。

soup = bs4.BeautifulSoup(source.text, "html.parser")
for i in soup.findAll("td"):
    file = open("{}_k_data.txt".format(nm),"a")
    kabu_data = str(i.string)+"\n"

④また、"td"タグ分、準備していたテキストファイルに書き込む動作を繰り返す。

file.write(kabu_data)
file.flush()

以上。

次はデータ分析などで使えるような形で取得するコードを書いてみたい。

といっても、まだデータ分析に使うためのモジュールの使い方もわかっていないので、まずはその勉強からかな。