スクレイピングしてPandasデータフレームへ


記念すべき(?)初投稿記事「pythonスクレイピングはじめの一歩」に「いいね!」を下さった方々、ありがとうございます。
今回はもう少しだけ発展させ、「スクレイピングした結果をPandasのデータフレームにセットしてcsv出力」するコードです。
当初は挙動が掴みづらくてPandas大嫌いだった私ですが、いつの間にか「import pandas as pd」を真っ先に書くようになってて、あれれー?って感じです。なんだかんだ便利なんですよね・・・。
では、コードはこちら↓
※Python3
※urllib、BeautifulSoupのインストールは別途必要

# import ----------------------------------
from urllib import request
from bs4 import BeautifulSoup
import pandas as pd

# setting -------------------------------
URL_BASE = 'https://kabutan.jp/stock/?code='

# データ格納用のデータフレーム -------------------------------------
df = pd.DataFrame()

# 銘柄コードのループ -------------------------------------------
for code in [4092, 5357]:

    # get html ----------------------------------
    url = URL_BASE + str(code)
    html = request.urlopen(url)

    # Beautiful soup ----------------------------------
    soup = BeautifulSoup(html, 'html.parser')

    # 四本値取得、セット ------------------------------------------
    table = soup.findAll('table',{'class':'stock_st_table'})[0]
    rows = table.findAll('td')
    for i, row in enumerate(rows):
        buf = row.get_text()
        if buf in ['始値','高値','安値','終値']:
            key = buf
            df.loc[code, key] = rows[i+1].get_text()

# csv出力 -------------------------------------
# indexに設定していた銘柄コードを"code"という列に持たせる
df.reset_index(inplace=True)
df.rename(columns={'index':'code'}, inplace=True) 
# 書き込み
df.to_csv('scraping.csv', index=False)

※必要に応じてwebページのソースコードを確認する(chromeなら右クリック→「ページのソースを表示」)

locでの値のセットは速くないですが、処理時間が気になるような量でなければ分かりやすくて良いと思います。
前記事でも書きましたが、サイト側に負担をかけるような過度なスクレイピングはやめましょう。
欲しい情報を載せてくれているサイトへのリスペクトを大切に!