BSA02_Exchange_Rates.ipynb
필요한 패키지
import requests
import json
import time # (표준패키지) 시간과 관련된 작업을 수행할 때 필요한 패키지
# !pip install apscheduler
from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger
크롤링
url = "https://api.coinbase.com/v2/exchange-rates?currency=BTC"
response = requests.get(url)
비트코인 = json.loads(response.text)
비트코인
print("상품수", len(비트코인['data']['rates']))
print("비트코인가격:", 비트코인['data']['rates']['KRW']) # 한국의 비트코인 1개 가격
# currency=KRW 기준으로 (1원당 가격을 '원화'에 저장)
url = "https://api.coinbase.com/v2/exchange-rates?currency=KRW"
response = requests.get(url)
원화 = json.loads(response.text)['data']['rates']
원화
관심상품 = ['USD', 'EUR', 'JPY', 'CNY', 'BTC', 'ETH', 'DOGE']
# 1원당 'USD': '0.0007675585146542'이므로 역수를 취해서 1USD가 ?원인지 확인
가격 = []
for 상품 in 관심상품:
가격 += [1.0/float(원화[상품])] # append와 같은 역할
print(가격)
def 가격산출(url, 관심상품):
response = requests.get(url)
환전자료 = json.loads(response.text)['data']['rates']
가격 = [str(time.asctime())] # 작업을 수행한 시간을 문자열로 추가
for 상품 in 관심상품:
가격 += [1.0/float(환전자료[상품])]
return 가격
# 실행할 때마다 값이 바뀜 (은행 시장이 끝나면 값의 변화 없을 수도 있음)
결과 = 가격산출(url, 관심상품)
print(결과)
지정된 시간에 작업을 수행
sched = BackgroundScheduler()
def 가격산출():
url = "https://api.coinbase.com/v2/exchange-rates?currency=KRW"
관심상품 = ['USD', 'EUR', 'JPY', 'CNY', 'BTC', 'ETH', 'DOGE']
# 데이터를 저장할 때에는 파일을 열고 저장하고 닫아야 함
# w(write) : 덮어쓰기(새로 저장)
# a(append) : 추가
저장파일 = open("원화-환율.csv", "a", encoding="utf-8")
response = requests.get(url)
환전자료 = json.loads(response.text)['data']['rates']
가격 = str(time.asctime())
for 상품 in 관심상품:
가격 += ", " + str(1.0/float(환전자료[상품]))
print(가격)
# read(읽는 작업)을 할 때에는 닫을(close) 필요 없음
저장파일.write(가격+'\n')
# 닫는 작업 꼭 필요!!!
저장파일.close()
sched.start()
# 시간 간격을 60초 단위로 해서 작업(가격 산출) 반복
sched.add_job(가격산출, IntervalTrigger(), seconds=60)
# add_job 안에 내가 만든 함수를 넣음
# 안에 파라미터 값이 많으면 안되기 때문에 '가격산출'이라는 함수 생성
# 작업 종료
sched.shutdown(가격산출)
'Statistics > BSA' 카테고리의 다른 글
230327 / BSA04. 다양한 형태의 자료 파일 작업 속도 비교 (0) | 2023.04.02 |
---|---|
230322 / BSA03. 데이터 분석 주요 과정 살펴보기 (0) | 2023.03.26 |
230320 / BSA03. 가상환경에서 주피터랩 설치하기, 주피터노트북에서 자동완성 기능 구현하기 (0) | 2023.03.26 |
230320 / BSA03. 효율적인 메모리 관리와 프로그램 작성 (0) | 2023.03.26 |
230315 / BSA02. SNS 데이터 가져오기, 진행바(progress bar) 추가하기 (0) | 2023.03.26 |