이전에 Colab에서 에브리타임 스크래핑을 진행하는 방법을 알아보았다. Selenium을 활용한 에브리타임 스크래핑(1)-Colab 편
Colab에서는 컴퓨터를 켜서 Colab에서 코드를 실행해야지만 봇이 작동한다. 하지만 나는 컴퓨터를 켜지 않아도 백그라운드에서 봇이 작동하는 것을 원했다. 이를 위해서는 서버에 코드를 올릴 필요가 있었고 AWS, GCP 중 좀 더 친숙한 GCP에 코드를 올리기로 하였다.
Code Server
서버는 터미널에서 vim을 통해 코딩을 하는 방법과 code-server을 통해 VScode에서 코딩을 하는 방법이 있다. 아무래도 vim보다는 IDE에서 코딩을 하는 것이 편하므로 code-server를 통해 VSCode에서 프로젝트를 진행하였다. GCP에서 code server를 구축하는 방법은 아래의 블로그에서 자세히 설명하고 있다.
환경 세팅
필요한 라이브러리인 python, pip3, chromewebdriver, selenium, emoji, python-telegram-bot을 설치한다.
emoji 라이브러리는 이모티콘이 포함된 제목을 깨짐 없이 저장할 수 있게 해 준다.
sudo apt-get update
sudo apt-get install python3 python3-venv python3-pip
sudo apt install chromium-chromedriver
pip3 install emoji
pip3 install python-telegram-bot
pip3 install selenium
코드
웹 스크래핑 코드는 1편에서의 코드와 동일하다.
다만 1시간마다 웹 스크래핑을 진행하고 GCP 터미널을 종료해도 백그라운드에서 코드가 계속 실행되도록 하기 위해서는 쉘 스크립트를 작성할 필요가 있다. 쉘 스크립트는 반복되는 작업을 자동화하는데 유용한 스크립트로 리눅스 명령어, 변수, 반복문 등을 나열하여 실행시킬 수 있다. 내가 반복하고자 하는 작업은 1시간마다 웹 스크래핑 코드, 즉 everytime_scraper.py를 실행시키는 것이다. 이를 위해 쉘 스크립트 파일 execute.sh을 만들었고 코드는 다음과 같다. everytime_scraper.py를 실행하고 3600초(=1시간)를 쉬는 작업을 무한히 반복하는 코드이다.
#!/bin/bash
while true :
do
python3 everytime_scraper.py
sleep 3600
done
더 자세한 쉘 스크립트 문법은 아래의 사이트에서 자세히 설명하고 있다.
쉘 스크립트 파일을 실행하기 위해서는 sh 명령어를 사용하면 된다. 또한 파일을 백그라운드에서 실행하게 되면 GCP 터미널을 종료해도 코드가 계속 실행되는데 명령어 뒤에 &를 붙이면 된다.
sh execute.sh &
전체 코드는 여기서 확인할 수 있다.
후기
지금까지 개인 프로젝트를 진행할 때 내가 만들고 싶은 것, 다른 사람들이 많이 하는 것 등을 위주로 하였다. 하지만 이번 프로젝트처럼 누가 원하는 것을 만들어본 적은 처음이었다. 친구는 내가 개발한 서비스에 크게 만족하였고 고마움을 표시했는데 나는 누군가의 문제를 해결해주는 것을 좋아한다는 것을 알게 되었다. 또한 처음엔 이 프로젝트가 가능할까?는 생각을 하기도 하였다. 웹 스크래핑이 처음이었고 에브리타임 스크래핑을 진행했다는 사람은 많이 보지 못한 거 같았기 때문이다. 그런데 하나하나 차근차근 진행하다 보니까 되었다. 물론 셀레니엄, GCP를 이용하는데 많은 시행착오를 겪었지만 구글 신만 있으면 해결하지 못할 문제는 없고 만들지 못할 것은 없다는 것을 새삼 느꼈다.
'데이터 엔지니어링' 카테고리의 다른 글
[Python] Selenium을 활용한 에브리타임 스크래핑(1) - Colab (0) | 2022.01.12 |
---|
댓글