エンジニアリングとお金の話

都内で働くエンジニアの日記です。

【技術】証券コードを取得するツールを作成し直した

【SPONSORED LINK】

以前yahoo financeから証券コードを取得するツールを作成したのだが、全部の証券コードが取得出来ない事が判明した為、作り直す事にした。

※前回のソース:http://hatakazu.hatenablog.com/entry/2015/07/20/110834

で、今回新たに作成したのがこれ↓

#-*- coding=utf-8 -*-

from BeautifulSoup import BeautifulSoup
import requests

"""yahooFinance get stockCode and CompanayName""" 
def stockCodeDict():
    companyCode=[]
    companyCategory=[]
    companyName=[]
    page=1
    while True:
        res=requests.get("http://stocks.finance.yahoo.co.jp/stocks/qi/?p=%s" % (page))
        bs=BeautifulSoup(res.text)
        if  len(bs.findAll("td",attrs={"class":"center yjM"})) > 0:
            for line in bs.findAll("td",attrs={"class":"center yjM"}):
                companyCode.append(line.text.encode("utf-8"))
            for line in bs.findAll("td",attrs={"class":"center yjSt"}):
                category=""
                if line.text.encode("utf-8") == "東証1部":
                    category="T1"
                elif line.text.encode("utf-8") == "東証2部":
                    category="T2"
                elif line.text.encode("utf-8") == "東証JQS":
                    category="JQ"
                else:
                    category="etc"
                companyCategory.append(category)
            for line in bs.findAll("strong",attrs={"class":"yjMt"}):
                companyName.append(line.a.text.encode("utf-8"))
            page += 1
        else:
            break
    
    return dict(zip(companyCode,zip(companyCategory,companyName)))

if __name__ == '__main__':
    for key,value in stockCodeDict().items(): 
        if value[0] == "T1":
            print "%s,%s" % (key,value[1])

前回作成したツールはyahoo financeの値上がりと値下がりのランキングからデータを取得する様にしていたが、それだと値動きが無い銘柄は取得出来ない為、中途半端な情報しか取得出来ない。その為、業種別銘柄一覧からデータを取得する様にした。また、市場の情報についても取得する様に追加を行った。銘柄一覧はネットで探しても見つからなかったので色々と活用出来そうである。