LoginSignup
3
3

More than 5 years have passed since last update.

上場会社一覧を取得して有報キャッチャーのatomを閲覧するまわり(XBRL取得の準備など)

Last updated at Posted at 2019-01-09
qiita.py

#事前処理
#!pip list
!pip install -q xlrd
###############################################

from google.colab import files

import google.colab
import googleapiclient.discovery
import googleapiclient.http

import os
#import datetime
import requests
from bs4 import BeautifulSoup
import time

import pandas as pd


def fn_fuga(sic):

    ### 有報キャッチャーの閲覧 ###
    start = time.time()
    print(sic)

    url = 'http://resource.ufocatch.com/atom/edinet/query/'+str(sic) + '0' 
    r = requests.get(url)

    soup = BeautifulSoup( r.text,'html.parser')
    tbl = soup.find_all("entry")

    if len(tbl) > 0:print("処理を開始します")
    ## 本処理:XBRLをダウンロードしてファイルをパースして値を取得 [後編に続く] ##    

    time.sleep(3)
    e_time = time.time() - start
    print ("endpoint_time:{0}".format(e_time) + "[sec]")


def fn_hoge(sc):

    ### 取得銘柄リストの生成###

    #JPXの東証上場一覧のページへのアクセス
    url= 'https://www.jpx.co.jp/markets/statistics-equities/misc/tvdivq0000001vg2-att/data_j.xls'
    os.system('wget '+ str(url)+' -O data_j.xls -a wget-log')

    ## pandasでexcelファイルの読み込みとdf整形など
    df = pd.read_excel( "data_j.xls" ) 
    df.columns = ['date','code','name','lst','sectorCode','sectorName', 'flr1', 'flr2', 'flr3', 'flr4']
    drop_col = ['flr1', 'flr2', 'flr3', 'flr4'] 
    df = df.drop(drop_col , axis=1) 
    df = df[df['sectorCode'] !='-']
    df = df[df['lst'] !='PRO Market']

    ec = sc+100
    df = df[df['code'] >=sc]
    df = df[df['code'] <=ec]
    lst = [i for i in df['code']]
    print( lst )
    x =[fn_fuga(sic) for sic in lst]
    print(len(lst))
# main
if __name__ == '__main__':

    total_star = time.time()

    sc = 1301
    if len(str(sc))==4:fn_hoge(sc)

    elapsed_time = time.time() - total_star
    print ("total_time:{0}".format(elapsed_time) + "[sec]")

 有価証券報告書のXBRLファイルを取得してパースしたい場合は、有報キャッチャーにて取得可能です。(他のサイトだと、日経電子版の各銘柄ページのリリース状況にEDINET提出書類としてpdfとXBRLファイルが置いてあります)

 有報キャッチャーのatomのURLで、企業コード(=証券コード+'0'の5桁のコード)を指定してあげると、該当銘柄の提出書類のXBRLやpdfのURL一覧が閲覧可能。例えば1301極洋の提出書類を閲覧したい場合は、「13010」で閲覧可能。

 仮に存在しない証券コード(例えば13020など)を指定してatomのURLを実行しても、スカスカの結果が変えるだけ、entryタグが存在しないなので、普通に1301から9999までrange(1301,9999)でforループを実行しても問題ないかと思うけれど、存在しないコードをわざわざ検索しにいくのも無駄といえば無駄なので、上記スクリプトでは最初に東証HPにて公開されている月次の上場会社一覧エクセルファイルをwgetで取得して、pandasでread_excel()でdfを生成した上で、ループ処理で有報キャッチャーatom_URLを閲覧しにいっています。

 なお東証HPにて公開されている月次の上場会社一覧エクセルファイルは、J-REITやETF、インフラファンドなども含まれているので、上記ではSectorCode='-'でそれら銘柄を除外し、なおかつPROマーケット銘柄も市場名で判定して除外しております。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3