python 9

Django 시작하기

Django란 Python에서 제공하는 Web Framework 중 하나로 Python 언어를 통해 쉽게 웹을 구성하고 배포할 수 있는 환경을 제공한다. 비슷한 Framework으로 Flask, FastApi가 있으며, 오늘은 Django 구성에 대한 내용을 포스팅 해보겠습니다. 환경 구성 기본적으로 Django 설치 시 아래와 같은 구성으로 구성 됩니다. 서버 #1: Django 서버 + Django DB(Default Sqllite3) 저는 실제 활용 테스트를 위해 아래와 같이 구성하였습니다. 서버 #1: Django 서버 (Windows 2022) 서버 #2: Django DB 서버 (Ubuntu 22.04) 간편하게, 사용하고 있는 노트북의 Windows 환경에서 구성하였으며, 로컬 PC에는 Py..

Python/Django 2023.08.13

Airflow - MySqlHook

회사에서 Airflow를 통한 업무 자동화 구현 시 Kubexecutor Docker Container에 pymsql 패키지 배포가 당장 어렵다고하여 현재 가지고 있는 Connection 정보를 통해 pymsql과 동일하게 cursor 형태로 DB 작업을 하기 위해 내용을 찾아 보던 중 MySqlHook을 통해 동일한 기능 구현이 가능한 것을 확인해 해당 내용 공유 드립니다 :) DB 변수 선언 - Pymsql에 사용될 DB 계정 정보 변수를 선언 > Admin -> Variables Pymysql 예시 from airflow.models import DAG from airflow.operators.python import PythonOperator from airflow.providers.mysql.o..

Airflow 2022.07.29

Airflow 시작하기

Airflow란? Apache에서 제공하는 Workflow 개발 및 데이터 파이프라인을 설계 모니터링할 수 있는 오픈 소스 솔루션입니다. Airflow 장점? 1. 파이썬 코드를 이용해 파이프 라인 구축을 진행하므로 파이썬 언어에서 지원하는 기능을 통해 복잡한 커스텀 파이프라인의 설계가 가능합니다. 2. 쉽게 확장이 가능하며 다양한 시스템과 통합이 가능합니다. (ex. DB, Public Cloud SaaS 등..) 3. 수 많은 스케줄링 기법을 통해 파이프 라인을 정기 실행 점진적 처리를 가능하게 하며, 재 실행이 필요 없는 효율적인 파이프라인 구축이 가능합니다. 4. 백필 기능을 통해 과거 데이터의 재 처리가 용이하며 코드 변경 후 재 생성이 필요한 데이터의 재 처리도 가능합니다. 5. WEB UI를..

Airflow 2022.05.31

DAG 작성하기 - 1

DAG란? DAG(Directed Acyclic Graph) 방향성 비순환 그래프의 약자로 원하는 데이터를 얻긱 위해 실행되는 여러 테스크 또는 동작의 흐름으로 화살표의 방향성의 끝점을 포함하되 반복이나 순환을 허용하지 않습니다. 그래서 아래 내용을 바탕으로 보면 'download_lauches' task가 먼저 실행이 되며, 해당 task가 정상적으로 실행되어야 'get_pictures' task가 실행되며 위와 같이 순차적으로 task들이 실행이 되며, 사용자는 이러한 종속성에 맞게 DAG안에 task들을 다양한 Operator들을 통해 정의하게 되며 Python, Yaml, Bash 등 여러 가지 언어가 사용 가능하므로 복잡한 task들의 조합을 통해 효율적인 데이터 파이프라인을 구성할 수 있습니다..

Airflow 2022.05.31

Text Compression

Python 기본 함수들을 이용하여 "aabbccc" 형태의 String을 a2b2c3 형태로 Compression 하는 알고리즘에 대해서 알아보고 코드를 직접 작성하여 데이터 출력을 확인해보도록 하겠습니다. 1. 알고리즘 정리 - 문자열로된 데이터를 입력 받습니다. - 문자열을 배열 형태로 출력하여 현재 데이터와 다음 데이터 비교 연산을 진행합니다. - 현재 데이터와 다음 데이터가 같을 경우 Count 변수를 증가 시킵니다. - 현재 데이터와 다음 데이터가 다를 경우 comp_str 변수에 데이터를 입력합니다. - For문 종료 후 마지막 데이터를 추가하여줍니다. - 최종 데이터를 리턴 합니다. 2. 코드 작성 및 분석 - 전체 코드는 아래와 같습니다. - i 값 변화에 따른 데이터 변화 - 최종 결과

Python/Automation 2020.12.13

Selenium을 이용한 웹 크롤링 - 3 (Iframe 이동)

Selenium을 이용하여 크롤링을 하다보면 개발자 도구로 분명히 Element 정보를 확인했는데 동작이 되지 않는 경우가 있습니다. 이럴 경우 페이지 소스를 열어 해당 태그 내용이 존재하는지 확인해주세요. 제가 크롤링 작업을 하던 페이지의 경우 아래와 같이 Iframe 형태로 데이터를 제공하고 있었습니다. 1. Iframe 정보 확인 - 개발자 도구를 이용하여 아래 클럽 버튼에 대한 xpath를 획득한 후 클릭하는 작업을 실행 해줍니다. - 잔여타임 예약 이동 및 클럽 선택 - 아래 코드를 실행 했지만 아무런 반응이 없습니다. 2. 소스 코드 확인 - Ctrl + U 버튼을 통해 소스 코드를 확인 합니다. - 소스 코드 확인 결과 위와 같이 확인되며, 아래와 같은 버튼에 대한 정보는 확인되지 않습니다...

Selenium을 이용한 웹 크롤링 - 2 (세션 종료 및 이동)

이전 포스트에 이어서 접속한 페이지에서 발생하는 팝업 등을 제거하거나 페이지를 이동하는 작업을 해보겠습니다. 1. Session 확인 - 이전 포스트에서 로그인 완료 시 아래와 같이 창이 2개가 발생하는 것을 볼 수 있습니다. - 팝업창만 제거 하기위해 현재 열러 있는 세션의 정보를 획득해 보겠습니다. - window_handles 명령어를 통해 세션 정보를 획득합니다. 2. Session 종료 세션은 실제 창이 떠있는 순서로 배열 형태로 되어있으며, 가장 아래에 있는 메인 세션을 제외하고 종료해보겠습니다. - 현재 열려 있는 세션 개수 확인 - while문을 사용하여 세션을 이동 후 가장 아래 세션(window_handles[0]) 제외하고 종료해줍니다. - 위의 코드에 따라 팝업이 종료되어 세션이 1..

Selenium을 이용한 웹 크롤링 - 1 (기초)

1. Selenium이란? Beautifulsoup 등 기존 크롤러들의 한계를 극복하기 위해 마우스, 키보드의 동작이나 디스플레이에 바로 나타나는 HTML과의 상호작용을 할 수 있는 Python 라이브러리 중 하나이다. 예를 들어, 자동으로 ID나 PW를 받아 로그인을 해주거나, 팝업을 지워주거나, 페이지를 이동하는 작업 등을 할 수 있다. 2. Selenium 설치 설치 전에 본인의 Python 버전 및 실행 위치 등을 체크해줍니다. - Powershell 실행 > python >>> import sys >>> sys.executable - 저는 3.8.1 버전을 사용하고 있습니다. - 현재 Python 공식 사이트 기준 3.9.0 버전까지 출시가 된걸로 확인이 됩니다. >>> Ctrl+Z >>> En..

Parsing, Crawling 이란?

1. 파싱(Parsing)이란? 파싱(Parshing)이란 어떤 페이지(문서, HTML 등)에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출하여 정보로 가공하는 것을 말함. 주로 웹 페이지 소스나, 문서 등에서 행해지며 주로 HTML Tag, Xpath 등을 분석해 1차 적인 파싱(Parsing) 작업을 거치며 Python에서는 Beautifulsoup 모듈을 이용한다. 조금 더 Detail한 정보 수집이 필요할 경우 주로 정규 표현식을 이용한다. Python에서는 re 모듈을 사용하여 정규 표현식을 사용한 데이터 파싱(Parshing)을 진행한다. //re - Regex(Regular Expression) - 정규 표현식 2. 크롤링(Crawling)이란? 영어의 사전적 의미를 찾아보면 기어다니다는..