안녕하세요. 오늘은 코스피 기업별 외국인 및 기관의 보유 현황을 수집해 보았습니다.

▨ 일주일에 1개를 목표로 100주 동안 100개의 데이터를 수집하여 달인이 되려는 목표가 있었으나, 일주일에 한개도 벅차네요. ㅠ.ㅠ


대상 : Daum 주식 사이트 http://finance.daum.net/item/foreign.daum?code=005930&nil_profile=stockprice&nil_menu=b013


▶ Table Schema 

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `TBL_STOCK_STAKE_RATIO_DAUM` (
  `stock_code` varchar(10NOT NULL,
  `basic_date` date NOT NULL,
  `foreigner_share_cnt` double DEFAULT NULL COMMENT '외국인 보유 주식수',
  `foreigner_share_ratio` double DEFAULT NULL COMMENT '외국인 지분율(%)',
  `foreigner_buying_cnt` double DEFAULT NULL COMMENT '외국인 순매수량',
  `organization_buying_cnt` double DEFAULT NULL COMMENT '기관 순매수량',
  `yesterday_ratio` double DEFAULT NULL COMMENT '전일비',
  `updown_ratio` double DEFAULT NULL COMMENT '등락률(%)',
  PRIMARY KEY (`stock_code`,`basic_date`)
ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='주식 보유 비율(다음)';
cs


▶ MySQL 백업파일 - 111MB

TBL_STOCK_STAKE_RATIO_DAUM.7z.001

TBL_STOCK_STAKE_RATIO_DAUM.7z.002

TBL_STOCK_STAKE_RATIO_DAUM.7z.003


▨ 기타 요청 사항이나. 이런 데이터 수집하면 좋겠다. 하시는 분은 댓글로 내용과 함께 사이트 주소를 남겨 주시면 감사하겠습니다.

▨ 추가로 야후 증시 데이터에 잘못 된 부분이 많다는 의견이 있어, 다음에 있는 정보를 수집 중 입니다. 수집이 완료 되면 공유 드리도록 하겠습니다.


증시정보 에서 기업의 종류를 구분하는 WICS 코드 정보 엑셀 파일 입니다.

> 참고 사이트 : http://www.wiseindex.com/About/WICS


> 엑셀 파일


WICS_code.xlsx


Excel 파일을 읽어 DB에 insert 하는 Python 소스 공유 드립니다.

Python 3.6, Eclipse 에서 작업 하였습니다.


> Eclipse Project : 엑셀 파일을 읽어 DB에 저장 


- main.py : 메인 함수

- ClsDB.py : db 작업

- ClsLogHandler.py : Excel_Insert_Err_Log 파일에 오류 로그 저장



> Python Module : 아래 2가지 모듈은 추가로 설치하셔야 합니다.

- PyMySQL : mysql DB 처리 관련 모듈, https://github.com/PyMySQL/PyMySQL

- openpyxl :  Excel 처리 모듈 , http://openpyxl.readthedocs.io/en/default/



> DB Table

1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `TBL_STOCK` (
  `type_code` varchar(10NOT NULL,
  `basic_date` date NOT NULL,
  `open_value` float DEFAULT NULL COMMENT '시가',
  `high_value` float DEFAULT NULL COMMENT '고가',
  `low_value` float DEFAULT NULL COMMENT '저가',
  `close_value` float DEFAULT NULL COMMENT '종가',
  `adj_close_value` float DEFAULT NULL COMMENT '수정 주가',
  `volume_value` float DEFAULT NULL COMMENT '거래량',
  PRIMARY KEY (`type_code`,`basic_date`)
ENGINE=InnoDB DEFAULT CHARSET=utf8;
cs


> Source File Excel_Insert.zip


문의 및 의견은 댓글로 달아 주시길 바랍니다. 

암호 없이 SSH / SCP 로 원격 호스트에 접속하는 방법입니다.

관련 게시물은 많은데 제가 이해하지 못한 부분 추가하여 작성 합니다. 


> 구성



라즈베리에 DB 와 Python 을 설치하여 크롤링 데몬을 돌리고 있습니다.

DB 백업은 정기적으로 하고 있었는데 , 백업 파일을 동일 머신에 놓았더니 이번에 장애로 디스크가 날라 갔네요.

그래서, DB 백업 -> 압축 -> 별도 서버로 전송(Raspberry_02) 로 전송하는 스크립트로 수정 하였습니다.


> 동작 

오늘 날짜 폴더 생성 -> DB Backup -> 오래된 백업 폴더 삭제 -> 당일자 백업폴더 압축 -> 별도 서버에 전달 -> 압축파일 삭제 -> 별도 서버에서 4일전 압축파일 삭제


저는 crontab 에서 하루에 한번씩 호출 하도록 설정해 놓았습니다.


>    본문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/bin/bash
 
 
#Mysql DB Backup Script
 
# 오늘
nowdate=$(date +"%Y%m%d")
echo $nowdate
# 현재 시간
nowtime=$(date +"%H%M%S")
 
# 4일전
beforeday=$(date +"%Y%m%d" -'-4days')
echo $beforeday
 
#오늘날짜 폴더 생성
mkdir /home/pi/DB_Backup/$nowdate
 
#DB_LOTTO 백업
mysqldump -uroot -p[password] --routines DB_AUCTION > /home/pi/DB_Backup/$nowdate/DB_AUCTION_"$nowdate"_"$nowtime".bak
 
mysqldump -uroot -p[password] --routines DB_FINANCE > /home/pi/DB_Backup/$nowdate/DB_FINANCE_"$nowdate"_"$nowtime".bak
 
 
#4일전 날짜의 백업 폴더 삭제
rm -rf /home/pi/DB_Backup/$beforeday
 
 
#오늘 날짜 백업 폴더를 압축
tar cfvzP /home/pi/DB_Backup/"$nowdate"_DB_BackupFile.tgz /home/pi/DB_Backup/$nowdate/
 
#압축 파일을 라즈베리2에 전달
scp -922 /home/pi/DB_Backup/"$nowdate"_DB_BackupFile.tgz a209@192.168.0.10:/home/a209/DB_Backup
 
#압축 파일 삭제
rm -/home/pi/DB_Backup/"$nowdate"_DB_BackupFile.tgz
 
 
#Raspberry-02 에서 4일전 압축 파일을 삭제할 것 
ssh -p922 a209@192.168.0.10 "rm -f /home/a209/DB_Backup/$beforeday*.tgz"
 
cs


> 스크립트 파일 :      script_db_backup 2.sh



> 질문이나 의견 있으시면 댓글로 부탁 드립니다.

코스피 증시 데이터를 수집하면서, CSV 파일을 DB에 등록할 필요가 있어 만들었습니다.


> 모듈 설명 : https://docs.python.org/3/library/csv.html


> Eclipse 에서 만들었으며, Pythoh 3.6 을 사용하였습니다.


  - main.py : CSV파일을 Read

  - DBCls : DB 처리

  - ClsLogHandler.py : 파일에 오류 로그 기록 


> Source File :        CSV_Insert.zip


질문이나 의견은 댓글로 부탁 드립니다. ^^


+ Recent posts