Github Action으로 스크래핑 자동화하기
Github에서 제공하는 Action 기능을 통해 데이터 스크래핑 및 적재를 자동화합니다.
이번 글은 깃허브에서 무료로 사용할 수 있는 액션이라는 기능을 사용하여 데이터 적재를 자동화하는 과정을 공유하고자 한다.
Github Action
깃허브 액션은 모든 레파지토리에서 사용할 수 있다. 보통은 레파지토리의 상단 바에서 Actions
이라는 카테고리를 찾을 수 있다. 만약 Actions
이 없다면 Settings > Action > General > 'Disable Actions' 선택되어 있는지 확인하고 'Allow all actions and reusable workflows'로 변경해주면 아래 사진처럼 보일 것이다.

액션 카테고리로 들어로면 워크플로우를 생성하는 첫 페이지가 보일 것이다. 깃허브에서는 장고, 패키지 생성, 파이린트 등 상황에 따라서 사용할 수 있는 여러 워크플로우 템플릿을 제공한다.

이번에는 템플릿 사용 없이 직접 워크플로우를 생성할 것이기에 'set up a workflow yourself'을 선택한다. 그럼 설명과 같이 yaml 파일을 작성하는 페이지가 나온다.

이제 여기에 코드를 알맞게 입력하고 commit 입력하면 작업(Job)이 생성된다.
Workflow 작성
이번에 작성할 워크플로우의 조건은 아래와 같다.
- 하루에 한번 작동하기
- 데이터를 가져와서 DB서버에 Insert하기
- 작업 실패 시 수동으로 재시도 가능하게 하기
위 조건을 바탕으로 워크플로우를 작성하려고 한다. 먼저 액션에서 사용되는 yaml 파일의 레이아웃은 아래와 같다.
1 |
|
위 레이아웃을 기준으로 필요한 작업들을 하나씩 작성해보자.
schedule
먼저 매일 특정 시간에 작업이 실행되도록 설정하고자 한다. 액션에서는 리눅스 cron
을 지원한다.
1 |
|
액션에서 작동하는 cron
은 UTC 기준이기 때문에 시간을 잘 맞춰주어야 한다. UTC는 9시간을 더해야 한국 시간이며, 따라서 위 시간은 한국시간으로 13시 40분이다.
workflow_dispatch
이제 수동으로 작업을 실행할 수 있는 코드도 작성해보자. 보통 테스트를 해야하거나 작업이 실패했을 시 수동으로 작업을 실행하기 위해서 해당 코드도 추가한다.
1 |
|
그러면 액션에서 아래처럼 수동으로 실행할 수 있는 트리거가 생성된다.

build-linux
이제 작업이 실행될 리눅스 환경을 설정한다. max-parallel
은 병렬로 처리하려는 작업의 개수를 지정하며, matrix
는 작업을 실행할 언어 버전을 지원한다. 아래 코드는 파이썬 3.9 버전에서 작동되도록 설정한 것이다.
1 |
|
위 코드는 ubuntu 운영체제를 바탕으로 파이썬 3.9 버전을 병렬처리 없이 1개의 환경에서 진행된다는 의미이다.
steps
이제 본격적으로 작업내용을 작성해보자. 일단 스크래핑을 자동화하는 방법은 다음과 같다.
- 사용할 코드 가져오기 (actions/checkout@v2)
- 파이썬 설치하기 (Set up Python)
- 필요한 패키지 설치하기(Install python package)
- 크롬드라이버 설치하기 (Setup Chromedriver)
- 파이썬 스크립트 실행하기 (Build)
위에서 사용되는 파이썬 스크립트는 데이터를 스크래핑해서 DB에 저장하는 코드를 작성한 것이다.
최종 스크립트
위 내용들을 바탕으로 작성한 최종 스크립트는 아래와 같다.
1 |
|