前提・実現したいこと
ここに質問の内容を詳しく書いてください。
ウェブスクレイピングで株価を取得しCSVで保存する。
ダウンロードはできたのですが。なぜかずっと実装が終わらないです。
発生している問題・エラーメッセージ
/Users/ichinosemasahiro/env/lib/python3.7/site-packages/IPython/utils/traitlets.py:5: UserWarning: IPython.utils.traitlets has moved to a top-level traitlets package. warn("IPython.utils.traitlets has moved to a top-level traitlets package.") Traceback (most recent call last): File "stock_check.py", line 71, in <module> files.download(filename) File "/Users/ichinosemasahiro/env/lib/python3.7/site-packages/google/colab/files.py", line 178, in download 'name': _os.path.basename(filename), File "/Users/ichinosemasahiro/env/lib/python3.7/site-packages/google/colab/output/_js.py", line 35, in eval_js kernel = _ipython.get_kernel() File "/Users/ichinosemasahiro/env/lib/python3.7/site-packages/google/colab/_ipython.py", line 28, in get_kernel return get_ipython().kernel AttributeError: 'NoneType' object has no attribute 'kernel'
該当のソースコード
python
1import pandas 2import datetime 3import matplotlib.pyplot as plot 4import csv 5from google.colab import files 6 7 8 9def scraping_yahoo(code, start, end, term): 10 base = "http://info.finance.yahoo.co.jp/history/?code={0}.T&{1}&{2}&tm={3}&p={4}" 11 12 start = str(start) 13 start = start.split("-") 14 start = "sy={0}&sm={1}&sd={2}".format(start[0], start[1], start[2]) 15 end = str(end) 16 end = end.split("-") 17 end = "ey={0}&em={1}&ed={2}".format(end[0], end[1], end[2]) 18 page = 1 19 20 result = [] 21 while True: 22 url = base.format(code, start, end, term, page) 23 df = pandas.read_html(url, header=0) 24 if len(df[1]) == 0: 25 break 26 27 result.append(df[1]) 28 page += 1 29 result = pandas.concat(result) 30 result.columns = ['Date', 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close'] 31 32 return result 33 34if __name__ == "__main__": 35### 取得したい株価のコードを指定する(ここを変更):9684はスクエニの株価コードです 36 company = 9684 37 38 EndDate = datetime.date.today() 39 StartDate = EndDate - datetime.timedelta(days=18) ## ここで何日分のデータ取得するかを指定 40 41 data = scraping_yahoo(company, StartDate, EndDate, "d") 42 43 44 45 46 47 ## スクレイピングしたデータを一時退避 48df = data 49 50## 日付項目をソートできるようにフォーマット変換 51df['Date'] = pandas.to_datetime(df['Date'], format='%Y年%m月%d日') 52 53## adj CloseをDBに項目取り込みする為、スペース情報を_に変更 54df = df.rename(columns={'Adj Close': 'Adj_Close'}) 55 56## 銘柄コードを追加 57df['bond_cd'] = company 58 59## 移動平均算出の為、Date順にソートする 60df = df.sort_values(by=["Date"], ascending=True) 61 62## 7日移動平均を算出して追加 63df['avg_7day_Close'] = df["Close"].rolling(window=7).mean() 64 65## indexをDateに変更 66df.set_index("Date",inplace=True) 67 68## CSV出力 69filename = "bond.csv" 70df.to_csv(filename) 71files.download(filename) 72##files.close() 73##exit() 74 75
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
株価スクレイピングをしたことがある者です。
ただ禁止っていうのも可哀そうなので代替サイトのヒントを置いておきます。
https://stooq.pl/
ありがとうございます!
少しだけトライしてみたいと思います!
あなたの回答
tips
プレビュー