상세 컨텐츠

본문 제목

python Crawling + Scheduler

Python

by hongkd 2020. 9. 7. 13:01

본문

● 먼저 python 은 가상 환경을 만들어 필요한 라이브러리를 다운받아 사용해야 한다.

    이유는 여러개의 python 프로젝트를 가상 환경이 아닌 통합으로 사용한다면 라이브러리를 사용하는 소스들이 알 수      없는 에러 등 소스가 꼬이게 될 확률이 있다.

 

● 참고 https://offbyone.tistory.com/74

 

파이썬 가상환경(virtualenv)만들기

파이썬을 사용할 때 기본으로 제공되는 라이브러리만 사용되지 않고 많은 기능을 제공하는 라이브러리들을 추가 하여 사용하게 됩니다. 이러한 라이브러리가 특정 프로젝트에서만 사용되거나

offbyone.tistory.com

가상환경 접속
가상환경 접속 시 ( ) 확인
가상환경에서 pip를 통하여 필요한 라이브러리 설치

python 버전읜 가장 최신 버전으로 사용.

 

라이브러리 정리.

 

bokjoroCrawling.py

● python을 이용한 Crawling을 사용하기 위하여 BeautifulSoup 라이브러리 사용.

● 스케줄러를 사용하기 위하여 BackgroundScheduler 라이브러리 사용.

    - Scheduler를 통하여 Crawling을 하기 위해 필요한 parameter는 4가지, 각기 다른 parameter가 다른 시간 때에

      동작하기 위하여 BackgroundScheduler에 제공하는 cron 사용.

● Scheduler 구동 시 에러를 잡아주기 위하여 JobLookupError 사용

● Log를 남겨주기 위하여 module / logger.py / logger import 하여 사용

● local이 아닌 서버상 나타내는 시간이 UTC이므로 timezone을 이용하여 Asia/Seoul로 변경하기 위해 사용

● Crawling 하기 위하여 해당 URL을 읽기 위해 requests 사용

● datetime, time 은 DB insert 시 시간을 insert하기 위해 사용

 

 

dbModule.py

● 개발 DB는 MySQL 사용 - pymysql

● DB connect 시 host, user, password, db 값에 하드코딩을 하지않고 외부 파일인 ini 파일을 읽어 사용하므로

    configparser 사용

● 해당 프로젝트 진행시 paaS-TA(서버) 사용 하므로 해당 paaS-TA 에서 구동시 paaS-TA service의 MySQL을

    사용해야 하므로 환경변수를 읽어오기 위하여 os 사용

● json형식을 사용하기 위하여 사용

 

 

logger.py

● Log를 만들기 위하여 python에서 제공하는 logging 사용

● 해당 Log파일이 하루가 지나면 새로운 파일을 생성하기 위하여 TimedRotatingFileHandler 사용

 

 

bokjiroDBApi.py

● bokjiroDBApi는 OpenAPI 소스 이므로 python의 Flask framework 사용

● 결과 값을 json 형식으로 나타내기 위하여 jsonify 사용

● DB에서 결과를 넘겨주는 OpenAPI 이므로 module / dbModule.py 사용

 

 

★ Source

https://bitbucket.org/parksijun/bokjiro/src/master/