Day5
# -*- coding:utf-8 -*- #! usr/bin/env python3.7 import requests import json import zipfile import glob from bs4 import BeautifulSoup # 書類一覧APIのエンドポイント url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json" # 書類一覧APIのリクエストパラメータ params = { "date" : '2014-03-18' "type" : 2 } # 書類一覧APIの呼び出し res = requests.get(url, params=params, verify=False) # resultデータ取得 res_text = json.loads(res.text) results = res_text["results"] # 決算データに絞る kessan = [] for result in results: if result['docDescription'] is not None: if '四半期' in result['docDescription']: kessan.append(result) # zipファイルの取得 docid = kessan[0]['docID'] url = 'https://disclosure.edinet-fsa.go.jp/api/v1/documents/' + docid pramas = { "type" : 1 } res = requests.get(url, params=params, verify=False) # ファイルへの出力 filename = docid + ".zip" if res.status_code == 200: with open(filename, 'wb') as f: for chunk in res.iter_content(chunk_size=1024): f.write(chunk) # zipファイル解凍 with zipfile.ZipFile(filename) as existing_zip: existing_zip.extractall(docid) # 対象htmの取得 filepath = docid + '/XBRL/PublicDoc' files = glob.glob(filepath + '*.htm') files = sorted(files) target_file = files[1] with open(target_file, encoding='utf-8') as f: html = f.read() # htmデータの取得 soup = BeautifulSoup(html, 'html.parser') tag_p = soup.find_all('p') for p in tag_p: print(p.text)
・エンドポイント.....ネットワークにつながっているパソコンとかサーバとかスマホのこと。ネットワークにつながっている端末のこと。ネットワークの端っこ、末端にいる端末。エンドポイントと言ったら、クライアント側のコンピュータとサーバーも含むよ。
・params の verify=FalseとはSSL証明書の検証に使うらしい!verify=FalseだとSSLErrorになるのを無視するよん。
・JSON.....JSONとはjavascript objects notionのことでテキストベースのデータフォーマットのこと。Javascriptのオブジェクト表記構文のサブセットとなっている。XMLと比べると簡潔に構造化されたデータを記述することができるため、記述が容易で人間が理解しやすいデータフォーマットらしい。
JSONってなにもの? | Think IT(シンクイット)
・json.loads(params)......JSON形式の文字列を辞書に変換するために使う。
・if res.status_code == 200........res.status_codeとはHTTPステータスコードのことで、100番台が処理中、200番台が成功、300番台がリダイレクト、400番台クライアントエラー、500番台がサーバーエラーのこと。
PythonでWebページを取得できたかどうかのエラーチェックと安全な中止の仕方
・chunk......ひとまとまりのデータのこと。
・zipfile.ZipFile(filename)..........ZipFileオブジェクトを通して、zipファイルにアクセスする
・.extractall...............これで解凍される。
・files = glob.glob(filepath + '*.htm')........glob関数を使うことで特定のパターンにマッチするファイルを取得することができる。特定のファイルの「かたまり」を取得するイメージ。
【初心者向け】Pythonのglobを徹底解説!正規表現の書き方も説明 | TechTeacher Blog
・files = sorted(files).......まずソートとは、既存のリストの要素を並び替えるもので、これはリストに対してしか使えない。そして、sorted関数はリスト以外にも、タプル、辞書、集合に使うことができる。
Pythonでリストをソートするsortとsortedの違い | note.nkmk.me
Pythonのsortメソッドとsorted関数の使い方の詳しい解説 | HEADBOOST
本日のコードはこれ!ありがとうございました!
【Python】企業の決算情報をEDINET APIで取得する | 無次元日記