Spaces:
Sleeping
Sleeping
File size: 10,076 Bytes
cd63cf6 103de27 cd63cf6 103de27 cd63cf6 103de27 cd63cf6 103de27 cd63cf6 103de27 cd63cf6 103de27 4ef076a 103de27 cd63cf6 103de27 4ef076a 103de27 4ef076a 103de27 4ef076a 103de27 4ef076a 103de27 4ef076a 103de27 4ef076a 103de27 0f3776b 103de27 4ef076a 103de27 4ef076a 103de27 0f3776b 103de27 4ef076a 103de27 4ef076a 103de27 0f3776b 103de27 4ef076a 103de27 4ef076a 103de27 4ef076a 103de27 4ef076a 103de27 cd63cf6 103de27 cd63cf6 103de27 4ef076a 103de27 4ef076a cd63cf6 103de27 3baa49f 2d2be79 fb0c5bc 2d2be79 103de27 4ef076a 103de27 4ef076a 103de27 4ef076a cd63cf6 4ef076a cd63cf6 4ef076a cd63cf6 103de27 cd63cf6 103de27 4ef076a 103de27 4ef076a 103de27 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 |
from src.get_doc_id import GetDocID
from datetime import date, timedelta
import pandas as pd
import os
import warnings
from src.get_stock_code import StockCode_getter
from src import group_classification
from src.myLogger import set_logger
from answers import search, group2_classification
import csv
import openpyxl
from src import group1_scoring, group2_scoring, group3_scoring, group4_scoring
# ログ設定を初期化
logger = set_logger("my_app", level="INFO")
edinet_api_key = os.getenv("EDINET_API_KEY")
# 警告を特定のものに限定する
warnings.filterwarnings('ignore', category=DeprecationWarning)
def find_docID(security_code):
df = pd.read_csv('./data/csv/edinet_df.csv')
filtered_df = df[df['証券コード'] == security_code]
# Check if any rows were found
if not filtered_df.empty:
# Get the 'docID' from the filtered DataFrame
docID = filtered_df.iloc[0]['docID']
return docID
else:
return -1
def find_ir(security_code):
docID = find_docID(security_code)
if docID != -1 or docID is not None:
PDF = "https://disclosure2dl.edinet-fsa.go.jp/searchdocument/pdf/" + str(docID) + ".pdf"
return PDF
def ph2_group_classification(company_name):
group, related_url_list, unrelated_url_list, other_url_list = search(company_name)
logger.info(f'{company_name}: {group}')
if group == 'Group 1-1':
scoring_result, url = group1_scoring.scoring(company_name)
logger.info(f'Scoring result: {scoring_result}')
elif group == 'Group 3':
scoring_result, url = group3_scoring.scoring(company_name)
logger.info(f'Scoring result: {scoring_result}')
elif group == 'Group 1-2':
path = 'data/Group1-2_result.csv'
scoring_result = []
with open(path, mode='a', newline='') as file:
row = [company_name, group, related_url_list]
writer = csv.writer(file)
writer.writerow(row)
else:
path = 'data/Group5_result.csv'
scoring_result = []
with open(path, mode='a', newline='') as file:
row = [company_name, group, related_url_list]
writer = csv.writer(file)
writer.writerow(row)
return group, related_url_list, unrelated_url_list, other_url_list, scoring_result
def init_csv():
path1 = 'data/Classification_result.csv'
header = ['企業名', 'Group', '関連URL', '関連無しURL', '開けなかったURL']
with open(path1, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(header)
# scoring_tier1-1.csv 初期化
path = 'data/Group1-1_result.csv'
header1_1 = ['企業名', "グループ名", '脱炭素言及内容', '関連URL']
with open(path, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(header1_1)
# scoring_tier1-2.csv 初期化
path = 'data/Group1-2_result.csv'
header1_2 = ['企業名', "グループ名", '関連URL']
with open(path, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(header1_2)
# scoring_tier2.csv 初期化
path = 'data/Group2_result.csv'
scoringList_Group2 = [
'再生可能エネルギーを使用している',
'太陽光発電を行っている',
'風力発電を行っている',
'バイオマスエネルギーの使用をしている',
'その他の再生可能エネルギーを使用している',
'その他の再生可能エネルギーの例',
'エネルギー使用量の削減を行っている',
'電気自動車の利用',
'暖房や給湯などでヒートポンプを利用している',
'その他の方法でエネルギー使用量の削減を行っている',
'その他のエネルギー使用量の削減の例'
]
header2 = ['企業名', 'グループ分類'] + scoringList_Group2 + ['スコア', '関連ありURL']
with open(path, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(header2)
# scoring_tier3.csv 初期化
path = 'data/Group3_result.csv'
scoringList_Group3 = [
'再生可能エネルギーを使用している',
'太陽光発電を行っている',
'風力発電を行っている',
'バイオマスエネルギーの使用をしている',
'その他の再生可能エネルギーを使用している',
'その他の再生可能エネルギーの例',
'エネルギー使用量の削減を行っている',
'電気自動車の利用',
'暖房や給湯などでヒートポンプを利用している',
'その他の方法でエネルギー使用量の削減を行っている',
'その他のエネルギー使用量の削減の例'
]
header3 = ['企業名', 'グループ分類'] + scoringList_Group3 + ['スコア', '関連ありURL']
with open(path, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(header3)
path = 'data/Group4_result.csv'
scoringList_Group4 = [
'再生可能エネルギーを使用している',
'太陽光発電を行っている',
'風力発電を行っている',
'バイオマスエネルギーの使用をしている',
'その他の再生可能エネルギーを使用している',
'その他の再生可能エネルギーの例',
'エネルギー使用量の削減を行っている',
'電気自動車の利用',
'暖房や給湯などでヒートポンプを利用している',
'その他の方法でエネルギー使用量の削減を行っている',
'その他のエネルギー使用量の削減の例'
]
header4 = ['企業名', 'グループ分類'] + scoringList_Group4 + ['スコア', '関連ありURL']
with open(path, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(header4)
# scoring_group5.csv 初期化
path = 'data/Group5_result.csv'
header5 = ['企業名', "グループ名", '関連URL']
with open(path, mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(header5)
return (header1_1, header1_2, header2, header3, header4, header5)
def main(company_name, docID):
# # =====初回のみ実行(有価証券報告書の各情報取得)====
# if not os.path.exists("./data/csv/edinet_df.csv"):
# today = date.today()
# one_year_ago = today - timedelta(days=365)
# gd = GetDocID(start_date=one_year_ago, end_date=today, edinet_api_key=edinet_api_key)
# edinet_df = gd.create_docid_df()
# edinet_df.to_csv("./data/csv/edinet_df.csv",index=False)
# # ==========================================
logger.info(f"{company_name} docID: {docID}")
if docID != -1:
# docID += "0"
# PDF = find_ir(docID)
PDF = "https://disclosure2dl.edinet-fsa.go.jp/searchdocument/pdf/" + str(docID) + ".pdf"
logger.info(f'{company_name} 有価証券報告書: {PDF}')
result = group_classification.main(PDF)
if result == '(1, 1)':
group = 'Group 4'
logger.info(f'{company_name}: Group 4')
related_url_list = PDF
scoring_result, urls = group4_scoring.scoring(company_name)
unrelated_url_list = ' '
other_url_list = ' '
return group, related_url_list, unrelated_url_list, other_url_list, scoring_result
elif result == '(1, 0)':
url = [PDF]
group, related_url_list, unrelated_url_list, other_url_list = group2_classification(company_name)
logger.info(f"related_url_list: {related_url_list}")
if isinstance(related_url_list, list):
related_url_list += url
else:
related_url_list = [PDF]
logger.info(f'{company_name}: {group}')
if group == 'Group 2':
scoring_result, urls = group2_scoring.scoring(company_name)
logger.info(f'Scoring result: {result}')
else:
scoring_result = []
path = 'data/Group1-2_result.csv'
with open(path, mode='a', newline='') as file:
row = [company_name, group, related_url_list]
writer = csv.writer(file)
writer.writerow(row)
return group, related_url_list, unrelated_url_list, other_url_list, scoring_result
else:
return ph2_group_classification(company_name)
else:
return ph2_group_classification(company_name)
if __name__ == "__main__":
# 企業リストを分類し、コンソールに分類結果を出力
# company_list = ["日本石油販売株式会社(D&Dstudio)"]
# for company_name in company_list:
# logger.info(main(company_name))
# print("==========\n")
# data/会社情報.xlsxが企業リストで企業リストを分類し、csvファイルに出力
stock_code_getter = StockCode_getter()
_, _, _, _, _, _ = init_csv()
path = 'data/Classification_result.csv'
workbook = openpyxl.load_workbook('data/test_data.xlsx')
sheet = workbook.active
for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, min_col=2, max_col=2):
for cell in row:
company_name = cell.value
docID = stock_code_getter.get_stock_code(company_name)
group, related_url, unrelated_url, other_url, scoring_result = main(company_name, docID)
data = [company_name, group, related_url, unrelated_url, other_url]
with open(path, mode='a', newline='') as file:
writer = csv.writer(file)
writer.writerow(data)
print("==========\n")
# 一時保存用pdfの削除
file_path = 'copy.pdf'
if os.path.exists(file_path):
os.remove(file_path)
|