Today_I_Learned 10

펀드기준가격 스크레이핑을 위한 AWS 람다 함수(Node)

데이터 출처 : https://dis.kofia.or.kr/websquare/index.jsp?w2xPath=/wq/fundann/DISFundStdPrice.xml&divisionId=MDIS01004001000000&serviceId=SDIS01004001000펀드 기준가는 위 화면에서 검색할 수 있다. 검색하고 상세 보기하면 아래와 같이 뜬다.여기서 기준가만 받아오고 싶은데 실시간으로 받을 수 있는 API가 없다.네트워크 탭에서 잘 비벼보면 XML로 된 API가 있다. URI와 헤더, 페이로드를 딴다.Node로 세팅한 AWS Lambda 함수를 하나 판다.export const handler = async (event) => { const { fundCd } = JSON.parse(event.bo..

Today_I_Learned 2024.08.13

Shell로 BOJ VSCode Java 설정 자동화하기 (Mac 기준)

요새 특강 때문에 PS를 반복으로 하고 있다. PS용으로는 Eclipse와 IntelliJ는 좀 무거운 느낌이라서 VScode로 진행 중이다. 근데 이게 계속 하다보니 번거롭고 귀찮다. 그런데 또 나는 개발자다. 그러하니 자동화하자. VScode는 .vscode/launch.json 에서 실행/디버깅 설정을 관리한다. 문제를 풀기 위한 기본 폴더 + input.txt를 만들어주면서 동시에 해당 경로로 실행 설정을 가장 top으로 잡아주는 걸로 구현 Repository (폴더 구조) GitHub - TomAlgorismus/snippet: 코드 조각 코드 조각. Contribute to TomAlgorismus/snippet development by creating an account on GitHub...

Today_I_Learned 2024.01.17

Playwright로 Colab에서 연합뉴스 크롤링하기

Playwright로 Colab에서 연합뉴스 크롤링하기 Colab 노트북 231221_Playwright로 Colab에서 연합뉴스 크롤링하기.ipynb Colaboratory notebook colab.research.google.com 연합뉴스 최신기자 페이지(https://www.yna.co.kr/news/1)를 크롤링하는 코드를 짜달라는 요청이 들어왔다. 아니 컴공 복전한 사람이 이런 것도 못해? 라고 힐난하고 책망하려던 차에... --------------------------------------------------------------------------- SSLError Traceback (most recent call last) /usr/local/lib/python3.10/dist-p..

Today_I_Learned 2023.12.21

[Django DRF] Serializer에서 id를 사용한 M:N 관계

Django REST Framework(DRF)에서 Many-to-Many(M:N) 관계 Book과 Author 모델이 M:N 관계에 있다고 가정 Book 모델이 여러 Author를 가질 수 있고, 반대로 Author도 여러 Book을 가질 수 있는 상황 이미 작성된 author를 사용한다고 가정 # models.py from django.db import models class Author(models.Model): id = models.IntegerField(primary_key=True) name = models.CharField(max_length=100) class Book(models.Model): title = models.CharField(max_length=100) authors = mo..

Today_I_Learned 2023.11.13

AWS API Gateway로 DynamoDB PutItem 메서드 구현 (23.10.13)

본 글을 이해하기 위해서는 아래와 같은 사항이 필요함 - AWS 계정 생성 경험 - RESTful API에 대한 이해 (HTTP Verb, Body, 테스트 등) - Colab(Jupyter Notebook, Python)에 대한 경험 STEP 1 : API Gateway 생성 상단 검색바에 API Gateway 검색 및 접속 API 생성 클릭 REST API 의 구축 선택 프로토콜 선택 : REST, 새 API 생성 : 새 API 을 선택 (기본값) API 이름을 입력하고 (예: DynamoDB) API 생성 클릭 STEP 2 : DynamoDB 사용을 위한 IAM 역할 생성 API Gateway를 통해 DynamoDB에 접근하기 위해서 역할 을 생성해줘야함. 상단 검색바에 IAM 검색 및 접속 좌측 ..

Today_I_Learned 2023.10.14

multiprocessing를 통한 병렬 처리 파이썬 코드 예제

데이터 처리에서 2~3배 정도 성능 향상을 목표로 사용할 수 있는 테크닉. 데이터 저장 시 multiprocessing.Queue를 꼭 사용해야함 (공식 문서 참고) # !pip install finance-datareader -q from multiprocessing import Pool, Queue, cpu_count import FinanceDataReader as fdr import time # 테스트에 쓸 데이터 목록 top50 = fdr.StockListing('ETF/KR').Symbol.head(50) # 일반 처리 start_time = time.time() [fdr.DataReader(symbol) for symbol in top50] print(f'NORMAL : {(time.time..

Today_I_Learned 2023.09.30

네이버 증권 ETF 시세 정보 및 항목 리스트 API 조회 파이썬 코드 예제

네이버 증권의 ETF 시세 정보의 API에 접근하는 코드 FinanceDataReader에 유사한 접근할 수 있는 기능이 있지만, 단순 이름만 제공하고 시가총액 등 세부 내용엔 접근할 수 없다. import requests import pandas as pd def get_etf_item_list(): # 데이터 요청 URL = 'https://finance.naver.com/api/sise/etfItemList.nhn' response = requests.get(URL) data = response.json().get('result').get('etfItemList') # 테이블화 & 컬럼 정리 df = pd.DataFrame(data) df.columns = ['종목코드', '카테고리', '종목명',..

Today_I_Learned 2023.09.30

장내채권 가격 데이터 조회 파이썬 코드 예제

신한투자증권에서 제공하는 장내시세 페이지의 API가 너무 대놓고 노출되어 있어서 참을 수 없었다. pandas를 통해서 금융 데이터 분석하기에는 꽤나 괜찮은 예제 예제 코드 import requests import pandas as pd class bond: def __init__(self): self.get_prices() pass def get_prices(self): # 데이터 받기 URL = 'https://www.shinhansec.com/siw/wealth-management/bond-rp/590401/data.do' response = requests.get(URL) data = response.json().get('body').get('반복데이타0') # 테이블 전처리 df = pd.Dat..

Today_I_Learned 2023.09.29

Cloudflare R2 파일 업로드 파이썬 코드 예제

Boto3에 이슈(urllib3)가 있어서 직접 AWS V4 Signiture를 꾸역꾸역 구현 Cloudflare R2에 도메인을 붙여서 사용하고, 더불어 구현에서의 유연성을 위해 환경변수를 넣어서 설정 예제 코드 ''' %env r2_account_id = ... %env r2_access_key_id = ... %env r2_secret_access_key = ... %env r2_bucket = ... %env r2_domain = ... !echo $r2_account_id $r2_access_key_id $r2_secret_access_key $r2_bucket $r2_domain %%writefile sample.csv col1, col2, col3 1, 2, 3 4, 5, 6 7, 8, 9 ..

Today_I_Learned 2023.09.29

TISTORY 블로그 작성 자동화 파이썬 코드 예제

access_token의 발부를 전제로 함 향후 aws lambda로 확장성을 고려하여, 배포 후 설정이 변경될 부분에 대해서는 환경변수화 예제 코드 # %env access_token=... # %env category=... # %env visibility=0 # !echo $access_token $category $visibility import requests import os class Tistory: ''' 티스토리 블로그 작성 자동화 https://tistory.github.io/document-tistory-apis/ ''' def __init__(self, access_token): self.access_token = access_token self.get_blog_name() self..

Today_I_Learned 2023.09.29