https://non-dimension.com/kabuka-scraping/
上記サイトの株価を取得するコードを作成したいのですが、
私の方法ではエラーが出てきてしまいます。もしよろしければ、
どの点が間違えているのか教えていただきたいです。
プログラミングについてはprogateで少し勉強した程度なので、全く分からないです。
申し訳ございません。
以下のコードを動かし、株価の取得の自動化を行いたいのですが、うまくいきません。
google colaboratoryを使用しています。
こちらはどの点が間違えておりますでしょうか。
何も分からず恐縮ですが、ご回答いただけたら幸いです。
python
1 2from google.colab import drive 3drive.mount('/content/drive') 4 5Mounted at /content/drive 6 7import csv 8 9csvfile = open('/content/drive/My Drive/google cora/code_list.csv') 10 11reader = csv.DictReader(csvfile) 12for row in reader: 13 print(row) 14 15from bs4 import BeautifulSoup 16import pandas as pd 17import requests 18from datetime import datetime 19 20def get_dfs(stock_number): 21 dfs = [] 22 year = [2018,2019] #2017〜2019年までの株価データを取得 23 for y in year: 24 try: 25 print(y) 26 url = 'https://kabuoji3.com/stock/{}/{}/'.format(stock_number,y) 27 soup = BeautifulSoup(requests.get(url).content,'html.parser') 28 tag_tr = soup.find_all('tr') 29 head = [h.text for h in tag_tr[0].find_all('th')] 30 data = [] 31 for i in range(1,len(tag_tr)): 32 data.append([d.text for d in tag_tr[i].find_all('td')]) 33 df = pd.DataFrame(data, columns = head) 34 35 col = ['始値','高値','安値','終値','出来高','終値調整'] 36 for c in col: 37 df[c] = df[c].astype(float) 38 df['日付'] = [datetime.strptime(i,'%Y-%m-%d') for i in df['日付']] 39 dfs.append(df) 40 except IndexError: 41 print('No data') 42 return dfs 43 44def concatenate(dfs): 45 data = pd.concat(dfs,axis=0) 46 data = data.reset_index(drop=True) 47 col = ['始値','高値','安値','終値','出来高','終値調整'] 48 for c in col: 49 data[c] = data[c].astype(float) 50 return data 51 52#作成したコードリストを読み込む 53code_list = pd.read_csv('code_list.csv') 54 55#複数のデータフレームをcsvで保存 56for i in range(len(code_list)): 57 k = code_list.loc[i,'code'] 58 v = code_list.loc[i,'name'] 59 print(k,v) 60 dfs = get_dfs(k) 61 data = concatenate(dfs) 62 data.to_csv('{}-{}.csv'.format(k,v))
python
1 2以下がエラーとして出てきました。 3 4--------------------------------------------------------------------------- 5--------------------------------------------------------------------------- 6FileNotFoundError Traceback (most recent call last) 7<ipython-input-46-64a85a5b6de8> in <module>() 8 37 9 38 #作成したコードリストを読み込む 10---> 39 codelist = pd.read_csv('codelist.csv') 11 40 12 41 #複数のデータフレームをcsvで保存 13 144 frames 15/usr/local/lib/python3.6/dist-packages/pandas/io/parsers.py in __init__(self, src, **kwds) 16 1889 kwds["usecols"] = self.usecols 17 1890 18-> 1891 self._reader = parsers.TextReader(src, **kwds) 19 1892 self.unnamed_cols = self._reader.unnamed_cols 20 1893 21 22pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.__cinit__() 23 24pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._setup_parser_source() 25 26FileNotFoundError: [Errno 2] File codelist.csv does not exist: 'codelist.csv' 27
python
1以下がエラーです。 2エラーが出た際、 3上のfor i in range(len(code_list)):のコードの部分に赤線が引かれていました。 4 5NameError Traceback (most recent call last) 6<ipython-input-55-b9a24c2bba32> in <module>() 7 40 8 41 #複数のデータフレームをcsvで保存 9---> 42 for i in range(len(code_list)): 10 43 k = code_list.loc[i,'code'] 11 44 v = code_list.loc[i,'name'] 12 13NameError: name 'code_list' is not defined
python
1以下がエラーです。次は上のこちらの部分に赤線がひいて 2ありました。→data = pd.concat(dfs,axis=0) 3 4 52424 ブラス 62019 7No data 82020 9No data 10--------------------------------------------------------------------------- 11ValueError Traceback (most recent call last) 12<ipython-input-67-3b125c0fc7ed> in <module>() 13 45 print(k,v) 14 46 dfs = get_dfs(k) 15---> 47 data = concatenate(dfs) 16 48 data.to_csv('{}-{}.csv'.format(k,v)) 17 182 frames 19/usr/local/lib/python3.6/dist-packages/pandas/core/reshape/concat.py in __init__(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort) 20 327 21 328 if len(objs) == 0: 22--> 329 raise ValueError("No objects to concatenate") 23 330 24 331 if keys is None: 25 26ValueError: No objects to concatenate
python
1以下が2framesを開いたエラー表記です。 2 32424 ブラス 42018 5No data 62019 7No data 8--------------------------------------------------------------------------- 9ValueError Traceback (most recent call last) 10<ipython-input-68-b8a81eea83a2> in <module>() 11 45 print(k,v) 12 46 dfs = get_dfs(k) 13---> 47 data = concatenate(dfs) 14 48 data.to_csv('{}-{}.csv'.format(k,v)) 15 162 frames 17<ipython-input-68-b8a81eea83a2> in concatenate(dfs) 18 29 19 30 def concatenate(dfs): 20---> 31 data = pd.concat(dfs,axis=0) 21 32 data = data.reset_index(drop=True) 22 33 col = ['始値','高値','安値','終値','出来高','終値調整'] 23 24/usr/local/lib/python3.6/dist-packages/pandas/core/reshape/concat.py in concat(objs, axis, join, ignore_index, keys, levels, names, verify_integrity, sort, copy) 25 279 verify_integrity=verify_integrity, 26 280 copy=copy, 27--> 281 sort=sort, 28 282 ) 29 283 30 31/usr/local/lib/python3.6/dist-packages/pandas/core/reshape/concat.py in __init__(self, objs, axis, join, keys, levels, names, ignore_index, verify_integrity, copy, sort) 32 327 33 328 if len(objs) == 0: 34--> 329 raise ValueError("No objects to concatenate") 35 330 36 331 if keys is None: 37 38ValueError: No objects to concatenate