Python

Python

[python error] 크롤링 중 발생한 에러

공공 데이터 포털을 크롤링 하는 중 발생한 에러들을 정리해보려고 한다. 참고로 https://www.data.go.kr/tcs/dss/selectDataSetList.do?dType=FILE&currentPage=1&perPage=100 에서 currentPage만 변경해가며 모든 데이터를 긁어오고자 했다. dType은 FILE, API, STD 세 가지 종류이며 각각 작성일 기준 618 페이지, 109 페이지, 2페이지이다. 각 페이지는 perPage=100이므로 100개의 데이터가 있다. couldn't find lxml bs4.FeatureNotFound: Couldn't find a tree builder with the features you requested: lxml. Do you need ..

Python

[python] asyncio - async, await 사용하기

비동기 프로그래밍 비동기 프로그래밍은 DB나 API와 연동 과정에서 발생하는 대기 시간을 낭비하지 않고 그 시간에 CPU가 다른 처리를 할 수 있도록 하는데, 이를 non-blocking하다고 한다. 반대로 동기 프로그래밍의 결과가 나올 때 까지 코드 실행이 중단되는 형태를 blocking이라고 한다. 동기와 비동기의 차이는 간단하게 다음과 같다. 동기(synchronous) 처리 : 특정 작업이 끝나면 다음 작업을 처리하는 순차처리 방식 비동기(asynchronous) 처리 : 여러 작업을 처리하도록 예약한 뒤 작업이 끝나면 결과를 받는 방식 대규모 애플리케이션에서 병렬 처리, 네트워크 통신, DB 연동 등을 효율적으로 수행하기 위해서는 비동기 프로그래밍이 필수적이기 때문에, 핵심적인 async awa..

Python

[python] FastAPI vs Flask 비교

FastAPI vs Flask 파이썬에서 웹 개발을 위해 사용하는 두 가지 프레임워크 FastAPI와 Flask를 간단하게 소개했었다. 얼핏 보기엔 비슷한 기능을 가지고 있지만 사용하는 상황이 다른 것 같아 보였다. 그렇다면 두 프레임워크는 어떤 점에서 차이가 있는지 비교해보고, 어떤 경우 사용하면 좋을지 알아보도록 하자. FastAPI 포스팅 https://im-so-so.tistory.com/117 Flask 포스팅 https://im-so-so.tistory.com/119 비교하기 FastAPI는 풀스택 프레임워크, Flask는 마이크로 프레임워크 풀스택 프레임워크 : 다양한 편리한 기능을 제공(데이터 유효성 자동 검사, 문서화 및 보안, JSON 및 폼 데이터 파싱, API 요청 처리, 웹 소켓 ..

Python

[python] Flask 기초 사용법

Flask Flask는 Micro Web Framework, 즉 간단한 웹사이트 혹은 간단한 API 서버를 만들 때 사용하는 파이썬 웹 프레임워크이다. Micro Web Framework라는 소개에 걸맞게 가벼운 기능으로, 가볍게 배우고, 가볍게 사용하고, 가볍게 배포할 수 있다는 장점이 있다. Django에 비해서는 기능이 적기 때문에 복잡한 개발에는 적절하지 않을 수 있다. 하지만 본인이 원하는 개발 환경, 어플리케이션에 따라 선택하는 것이 좋아보인다. 공식 문서 https://flask-docs-kr.readthedocs.io/ko/latest/index.html 시작 from flask import Flask app = Flask(__name__) @app.route('/') def hello_w..

Python

[python] pydantic 알아보기

pydantic pydantic은 파이썬에서 가장 많이 사용하는 데이터 유효성 검사 및 설정 관리 라이브러리이다. Python Type Annotation을 사용한 유효성 검사는 제공된 유형 및 제약 조건을 준수하는 모델을 구축하는 목적을 가지고 있다. 즉, pydantic은 입력 데이터가 아닌 출력 모델의 유형과 제약 조건을 보장한다. 공식 문서 https://docs.pydantic.dev/latest/ 유효성 검증 User의 name은 문자열, age는 정수로 지정한다. from pydantic import BaseModel class User(BaseModel): name: str age: int user1 = User(name='john', age=15) print(user1) user2 = U..

Python

[python] FastAPI 기초 사용법

FastAPI FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크라고 공식 문서에서 설명하고 있다. 웹 개발, API 개발을 해당 프레임워크를 통해 python으로 간단하게 구축 가능하다. 공식 문서 https://fastapi.tiangolo.com/ 특징 고성능: Starlette, Pydantic의 도움을 받아 NodeJS 및 Go와 대등할 정도로 매우 높은 성능을 가진다. 가장 빠른 파이썬 프레임워크 중 하나 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가 적은 버그: 사람(개발자)에 의한 에러 약 40% 감소 직관적: 훌륭한 편집기 지원. 모든 곳에서 자동완성 지원. 적은 디버깅 시간 쉬움:..

Python

[python] datetime hour 추출 후 zfill

datetime hour 추출 후 zfill datetime column에서 시간만 추출하고자 한다. 이 때 1시를 '1'이 아닌 '01'로 기록하고자 한다. 즉, 남은 자리를 0으로 채워 길이 2의 문자열로 변경하는 zfill을 사용한다. python 내장 함수로 str.zfill이 있는데, 이를 pandas series에서도 사용할 수 있는 pandas.Series.str.zfill 함수가 있다. 공식 문서 https://pandas.pydata.org/docs/reference/api/pandas.Series.str.zfill.html https://docs.python.org/3/library/stdtypes.html#str.zfill 1. datetime hour 추출 df라는 pandas.Da..

Python

[python] anaconda 설정

anaconda 파이썬으로 개발을 하다 보면 가상환경을 만들어 그 위에서 작업해야 하는 경우를 필연적으로 만난다. 그 이유는 프로젝트마다 사용하는 환경의 패키지가 다르고, 버전이 다르기 때문일 것이다. 따라서 독립적인 작업환경에서 패키지 및 버전 관리를 위한 가상의 환경을 구축할 필요성을 느낀다. 이를 도와주는 프레임워크인 anaconda를 사용해 보자. 설치 https://www.anaconda.com/download 가상환경 관리 Anaconda Prompt를 실행하여 진행한다. (Bash도 가능) 생성 conda create -n 가상환경이름 python 특정 버전을 적용하고 싶다면, 다음과 같이 생성한다. conda create -n 가상환경이름 python=3.9 나의 경우 python=3.9 ..

Python

[python] multiprocessing 사용법

multiprocessing 파이썬은 인터프리터 언어로서 기본적으로 single thread에서 순차적으로 동작한다. 그렇다면 많은 양의 처리를 나누어 처리하여 시간과 자원의 효율을 높이는 병렬처리를 하기 위해서는 어떻게 해야할까? 바로 지금 소개할 multiprocessing 모듈을 사용하는 것이다. multiprocessing 모듈로 부모 프로세스가 운영체제에 요청하여 자식 프로세스를 새로 만들어내는 과정인 프로세스 스포닝을 쉽게 수행할 수 있는데, 이를 통해 병렬로 cpu 작업을 할 수 있고 분산 처리 프로그래밍도 구현 가능하다. 하지만 프로세스는 각자가 고유한 메모리 영역을 가지기 때문에 쓰레드에 비하면 메모리 사용이 늘어난다는 단점도 있다. 공식 문서 https://docs.python.org/..

Python

[python] 동적 변수명 - globals(), locals()

동적 변수명 비슷한 변수명을 반복적으로 사용한다거나, for문으로 val1, val2, ... 처럼 규칙적인 변수를 정의하는 등의 상황에서 활용하는 방법이 있다. 바로 동적으로 변수를 생성하고 사용하는 것이다. 반복문 뿐만 아니라 규칙적인 변수 사용에 있어서 꽤 효과적이다. 오늘은 그런 역할을 하는 python 내장함수인 globals()와 locals()를 소개하고자 한다. globals() 현재 global 변수들(전역 변수)을 딕셔너리 형태로 return한다. 전역 변수는 파일 어디에서든 읽을 수 있지만 함수 안에서는 수정할 수 없다. 수정하고 싶다면 해당 변수가 전역 변수임을 명시해주어야 한다. globals 공식 문서 https://docs.python.org/3.10/library/functi..

so-so
'Python' 태그의 글 목록