売上高のタグにアクセスするところまで追記
*mainを関数化
import requests
from bs4 import BeautifulSoup ##スクレイピング用
import json ##Python3 で JSON 形式のデータを扱う方法
import re
import os
from xbrl_proc import read_xbrl_from_zip
def get_Edinet_doclist(date:str) -> list:
"""
get_Edinet_doclist
Edinetからドキュメント一覧のLISTを取得しリターンする。
Args:
<date> <str>:
提出した日付
Returns:
<type>:list
ドキュメント一覧リスト
"""
retdoclist = []
# 書類一覧APIのエンドポイント
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json"
# 書類一覧APIのリクエストパラメータ
params = {
"date" : date,
"type" : 2
}
# 書類一覧APIの呼び出し
res = requests.get(url, params=params, verify=False)
jsn = json.loads(res.text)
# レスポンス(JSON)の表示
print(type(jsn))
print(len(jsn))
print(jsn.keys())
#print(jsn)
for value in jsn['results']:
if isinstance(value['secCode'],str) and isinstance(value['docTypeCode'],str) and value['docTypeCode']=='120':
retdoclist.append(value)
return retdoclist
def fn_getzipfile(docid:str) -> str:
url2 = "https://disclosure.edinet-fsa.go.jp/api/v1/documents/" + docid
params2 = { "type" : 1}
fname = docid + ".zip"
print('■'+ str(fname))
# EDINET API_2:提出書類のZIP取得
res = requests.get(url2, params=params2)
# ファイルへ出力
zip_fname = os.getcwd() + "\\" + fname
if res.status_code == 200:
with open(zip_fname, 'wb') as f:
for chunk in res.iter_content(chunk_size=1024):
f.write(chunk)
return zip_fname
def main():
#関数呼び出しとメイン処理
getlist = get_Edinet_doclist("2019-06-19")
for value in getlist:
if isinstance(value['filerName'],str):
match = re.search(r'本田技研',value['filerName'])
if match:
print('証券コード:' + value['secCode'][0:4])
print('会社名:' + value['filerName'])
zip_fname = fn_getzipfile(value['docID'])
df_list = read_xbrl_from_zip(zip_fname)
for df in df_list:
print(type(df))
tagname = "NetSales"
contextname = "CurrentYearDuration_NonConsolidatedMember"
uri_data = df.query('tag == @tagname and context == @contextname').to_dict(orient='list')
print(str(uri_data['値'][0]))
if __name__ == '__main__': main()
まだ未完成
*