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

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

ただいまの
回答率

90.12%

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

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 128

Mamiya_tom

score 2

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
ウェブスクレイピングで株価を取得し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'

該当のソースコード

import pandas
import datetime
import matplotlib.pyplot as plot
import csv
from google.colab import files



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__":
### 取得したい株価のコードを指定する(ここを変更):9684はスクエニの株価コードです
    company = 9684

    EndDate = datetime.date.today()
    StartDate = EndDate - datetime.timedelta(days=18)  ## ここで何日分のデータ取得するかを指定

    data = scraping_yahoo(company, StartDate, EndDate, "d")





    ## スクレイピングしたデータを一時退避
df = data

## 日付項目をソートできるようにフォーマット変換
df['Date'] = pandas.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)

## CSV出力
filename = "bond.csv"
df.to_csv(filename) 
files.download(filename) 
##files.close()
##exit()

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • meg_

    2019/08/31 10:47

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

    キャンセル

  • Mamiya_tom

    2019/08/31 12:48

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

    キャンセル

  • asakuta

    2019/09/02 11:05

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

    キャンセル

  • Mamiya_tom

    2019/09/03 19:26

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

    キャンセル

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

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

  • ただいまの回答率 90.12%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる