Python
-
[데이터수집] 로또번호 전송봇 만들기Python/웹스크래핑.데이터수집 2021. 1. 4. 15:37
매주 토요일 저녁 8시 47분마다 동행복권 사이트(dhlottery.co.kr/common.do?method=main)에서 해당 주차 당첨번호를 확인 후 전송하는 텔레그램봇 작성 당첨번호 확인이 지연될 경우, 완료될 때까지 5분 단위로 재실행하고, 재시도하겠다는 메시지를 보낸다. 로또사이트는 참으로 친절해서 아래 url 정보만 있으면 번호를 바로 조회할 수 있다. url = 'https://dhlottery.co.kr/gameResult.do?method=byWin&drwNo=' + 회차정보 이제 매주의 회차 정보를 구하면 된다. 로또 추첨은 매주 1회 진행하고, 그때마다 1회차씩 증가하므로 처음 시작한 1회(2002. 12. 07.) 기준으로 몇주가 지나갔는가를 계산하면 된다. 조회 대상 날짜에서 시작..
-
[Summary] 텔레그램봇: 채권모니터링 ReviewPython/텔레그램봇:채권모니터링 2020. 12. 31. 19:54
언어 python3.7 이용한 python 라이브러리 os, time, datetime, requests, pandas, xlrd [, bs4, telegram] 상세 내용 증권시장 거래시간의 특정 시점에, 한국거래소에서 채권거래 호가 정보를 수집 후, 한국은행 API로 비교 기준인 최신의 채권 수익률을 확인(xml/json)하여, 전처리(null 데이터를 제외하고, 잔존기간을 일자로 환산, 투자등급/잔존기간/수익률 기준으로 필터링)한 다음, 텔레그램 메신저를 통해 적당한 메시지 포맷으로 전송한다. 여기서 증권시장 거래시간의 특정 시점이란 10시, 12시, 2시 30분, 3시 31분(종가) 처럼 특정 시간을 말한다. 또한 휴장일 정보를 확인(download/view)하여, 익일이 휴장일인 경우 건너뛸 수..
-
[데이터수집] 한국부동산원 청약홈/청약Home 분양정보 (2)Python/웹스크래핑.데이터수집 2020. 12. 29. 22:41
한국부동산원 청약홈 페이지의 APT 분양정보 및 경쟁률 조회 페이지에서, -조회 조건을 변경해 1페이지부터 끝페이지까지 다운로드 받는다. -항상 최신 데이터를 확인할 수 있도록 최신 일자를 갱신한다. (1) 한국부동산원 청약홈 페이지 1페이지의 테이블 다운로드 / 데이터 beautifulSoup으로 파싱 (2) 조회 조건 변경하기 - 전체 페이지 대상으로 실행/최신 일자로 실행 한국부동산원 청약홈 페이지는 조회 조건 선택 -> 조회 형식으로 이루어져있다. requests.post()시에 form data 항목에 해당 조건을 넣어서 전송하면, 실제로 마우스로 클릭하지 않더라도 해당 데이터를 얻을 수 있다. 1) 전체 페이지 대상으로 실행: 전체 페이지 수 정보는 어디에 있을까? 지난번에 전송했던 form ..
-
[인코딩] 유니코드 인코딩 처리 (특히 json 입출력 시)Python 2020. 12. 28. 10:16
파이썬에서 데이터를 json으로 저장하면 유니코드 16진수로 저장된다. 딕셔너리를 json.dump() 메소드로 저장하면 import json before = {"테스트1": "test1", "테스트2": "test2", "테스트3": ["테스트3-1", "테스트3-2", "테스트3-3"], "테스트4": {"테스트4-1": "테스트4-1-1"}} with open('sample.json', 'a+') as fp: json.dump(before, fp) 아래처럼 유니코드 16진수로 표현된다. # sample.json {"\ud14c\uc2a4\ud2b81": "test1", "\ud14c\uc2a4\ud2b82": "test2", "\ud14c\uc2a4\ud2b83": ["\ud14c\uc2a4\ud2..
-
[데이터수집] 한국부동산원 청약홈/청약Home 분양정보 (1)Python/웹스크래핑.데이터수집 2020. 12. 27. 20:33
한국부동산원 청약홈 페이지의 APT 분양정보 및 경쟁률 조회란의 1페이지에 있는 테이블을 다운로드 받은 후, beautifulSoup으로 파싱해서 tsv 형식으로 정제한다. (1) 한국부동산원 청약홈 페이지 1페이지의 테이블 다운로드 / 데이터 beautifulSoup으로 파싱 (2) 조회 조건 변경하기 - 전체 페이지 대상으로 실행/최신 일자로 실행 한국부동산원의 청약홈 페이지에 보면 분양정보 및 경쟁률이 있다. 문제는 자바스크립트 페이지라는 것. 드롭다운에서 선택지를 고르고 조회하는 형태다. 조회 화면은 이렇게 생겼다. 결과는 이렇게 출력된다. 아래는 1페이지의 일부다. 한 페이지에는 10건씩 표시되며 총 63페이지까지 있다. 데이터를 얻기 위해 개발자도구 - 네트워크 탭에 들어가서 해당 데이터가 어..
-
[데이터수집] 내일은 휴장일? 한국거래소 확인 (2) 조회Python/텔레그램봇:채권모니터링 2020. 12. 26. 21:03
봇을 돌리려면 오늘 휴장인지 정보가 필요하다. 해당 정보는 한국거래소 - MarketData - 시장정보 - 시장동향 - 증시일정 - 휴장일에서 1) 엑셀파일로 다운로드 후 확인 2) 조회 방식으로 확인 2가지 방법으로 확인이 가능하다. 조회도 파일다운로드처럼 OTP 발급과정을 거쳐서 처리하면 된다. Nowtime값을 GenerateOTP에 전달 -> OTP 발급 -> OTP를 MKD99000001에 전달 -> 조회 데이터 리턴 조회에 필요한 Nowtime은 epoch time이므로 int(round(time.time() * 1000))을 정의해서 처리한다. 이번에는 다운로드 대신 조회 기능을 사용해볼 예정이다. 개발자 도구의 네트워크 부분을 열어보니 조회에는 Nowtime.jspx라는 단계가 하나 더 ..
-
[데이터수집] 내일은 휴장일? 한국거래소 확인 (1) downloadPython/텔레그램봇:채권모니터링 2020. 12. 23. 17:16
봇을 돌리려면 오늘 휴장인지 정보가 필요하다. 해당 정보는 한국거래소 - MarketData - 시장정보 - 시장동향 - 증시일정 - 휴장일에서 1) 엑셀파일로 다운로드 후 확인 2) 조회 방식으로 확인 2가지 방법으로 확인이 가능하다. 엑셀파일 다운로드의 경우 채권정보를 가져왔던 방식과 동일하게 OTP 발급 스크립트를 추가해 처리하면 된다. 먼저 엑셀파일로 확인해본다. 실패한 엑셀파일 1차 시도 이쪽을 참고했다: nbviewer.jupyter.org/urls/financedata.github.io/posts/pandas-market-days-krx.ipynb 위 블로그에서는 OTP 발급절차 없이 바로 url로 접속해서 데이터를 확보했다. 바로 접속한 url은 이렇다: marketdata.krx.co.k..
-
[스케쥴링] 특정 시간에 실행하기 - 휴장일 커버Python/텔레그램봇:채권모니터링 2020. 12. 21. 19:21
파이썬에서 datetime.datetime object끼리는 크기 비교가 된다는 점을 이용해, 특정 시간을 기준으로 대기/실행 작업을 수행한다. 대기할 경우, datetime.datetime 객체와 datetime.timedelta를 더해 다음 기준 시간을 계산한다. time.sleep(datetime.timedelta(days=1, seconds=10).total_seconds())로 적당한 휴지시간을 둘 수 있다. + 휴장일을 커버할 수 있도록 구성했다 [python] 모듈 정리하기 까지해서 한 번 보내는 사이클은 완료되었다. 이제 해당 작업을 장이 열리는 시간에 반복하면 된다. 목표 하루에 확인은 4번만 하기로 하고, 주간에만 실행되니까, 월요일부터 금요일까지 10시 20분, 12시 20분, 2시 ..