## やりたい事
google colabからpythonを利用した処理で、
1)yahooの株価情報をスクレイピングしてきて、データフレームに格納
2)株価コードを追加したり、銘柄名を補正するなどのデータ変換
3)上記のデータをローカルにCSV保存する
1)yahooの株価情報をスクレイピングしてきて、データフレームに格納
#ライブラリの読み込み
import pandas
import datetime
# プログラム
def scraping_yahoo(code, start, end, term):
base = "http://info.finance.yahoo.co.jp/history/?code={0}.T&{1}&{2}&tm={3}&p={4}"
start = str(start)
start = start.split("-")
start = "sy={0}&sm={1}&sd={2}".format(start[0], start[1], start[2])
end = str(end)
end = end.split("-")
end = "ey={0}&em={1}&ed={2}".format(end[0], end[1], end[2])
page = 1
result = []
while True:
url = base.format(code, start, end, term, page)
df = pandas.read_html(url, header=0)
if len(df[1]) == 0:
break
result.append(df[1])
page += 1
result = pandas.concat(result)
result.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close']
return result
if __name__ == "__main__":
company = 9683 ### 銘柄コードを指定する
EndDate = datetime.date.today()
StartDate = EndDate - datetime.timedelta(days=180)
data = scraping_yahoo(company, StartDate, EndDate, "d")
print(data)
上記のコードはこちらのサイトのものを参考にさせていただいています。
http://www.stockdog.work/entry/2016/08/28/180911
2)株価コードを追加したり、銘柄名を補正するなどのデータ変換
## スクレイピングデータを一時退避
df = data
## 日付項目をソートできるようにフォーマット変換
df['Date'] = pd.to_datetime(df['Date'], format='%Y年%m月%d日')
## adj CloseをDBに項目取り込みする為、スペース情報を_に変更
df = df.rename(columns={'Adj Close': 'Adj_Close'})
## 銘柄コードを追加
df['bond_cd'] = company
## 移動平均算出の為、Date順にソートする
df = df.sort_values(by=["Date"], ascending=True)
## 7日移動平均を算出して追加
df['avg_7day_Close'] = df["Close"].rolling(window=7).mean()
## indexをDateに変更
df.set_index("Date",inplace=True)
3)上記のデータをローカルにCSV保存する
from google.colab import files filename = "bond.csv" df.to_csv(filename) files.download(filename)


