質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

0回答

375閲覧

Python3 スクレイピング エラーの意味がわかりません

Mamiya_tom

総合スコア17

スクレイピング

スクレイピングとは、公開されているWebサイトからページ内の情報を抽出する技術です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/08/31 00:21

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
ウェブスクレイピングで株価を取得し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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2019/08/31 01:47

対象サイトはヤフーファイナンスですか? 禁止されているはずなのでご確認ください。
Mamiya_tom

2019/08/31 03:48

禁止でした。やめます。 教えてくださいありがとうございました。
asakuta

2019/09/02 02:05

株価スクレイピングをしたことがある者です。 ただ禁止っていうのも可哀そうなので代替サイトのヒントを置いておきます。 https://stooq.pl/
Mamiya_tom

2019/09/03 10:26

ありがとうございます! 少しだけトライしてみたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問