본문 바로가기

sql

python 상장 기업 정보 mysql에 insert하기

mysql에 company table 생성 

drop table company;
create table company (
	회사명 varchar(20) not null,
    종목코드 varchar(8) not null,
    업종 varchar(50),
    주요제품 varchar(100),
    상장일 varchar(20),
    결산월 varchar(5),
    대표자명 varchar(50),
    홈페이지 varchar(50),
    지역 varchar(50),
    primary key(종목코드)    
);

kind에서 상장 기업들의 정보를 크로링해서 mysql에 insert 

 

def load_mysql_company():

    def get_stocks(market=None):
        market_type = ''
        if market == 'kospi':
            market_type = '&marketType=stockMkt'
        elif market == 'kosdaq':
            market_type = '&marketType=kosdaqMkt'
        elif market == 'konex':
            market_type = '&marketType=konexMkt'
        url = 'http://kind.krx.co.kr/corpgeneral/corpList.do?currentPageSize=5000&pageIndex=1&method=download&searchType=13{market_type}'.format(
            market_type=market_type)
        list_df_stocks = pd.read_html(url, header=0, converters={'종목코드': lambda x: str(x)})
        df_stocks = list_df_stocks[0]
        return df_stocks
    kp = get_stocks("kospi")
    kd = get_stocks("kosdaq")
    df_stock = pd.concat([kp, kd])
    # print(max(df_stock["대표자명"].apply(lambda x: len(x))))
#중복제거
    df_stock.drop_duplicates(['회사명'], keep='first', inplace=True)
    engine = create_engine("mysql+pymysql://root:" + "비번" + "@localhost/stock", encoding='utf-8')
    df_stock.to_sql(name='company', con=engine, if_exists='append', index=False)