1 AWS 클라우드

외부에서 데이터를 클라우드로 가져올 경우 우선 로컬 컴퓨터로 작업을 하고 S3에 옮겨 작업을 하는 경우가 크롤링 프로그램 기능구현 및 테스트를 위해서 우선되어야 한다. 크롤링 프로그램의 기능이 구현되고 테스트를 통해 검증이 되었다면, 다음 단계로 EC2 인스턴스에 크롤링 프로그램을 이관하여 정기적으로 크롤링되어 데이터를 S3 버킷에 쌓는 과정이 후속과정으로 수반된다. 로컬 컴퓨터에서 데이터를 클롤링하여 S3 버킷에 저장하는 방법은 데이터 크롤링 → S3을 참조한다.

EC2 크롤링 자동화

AWS EC2 인스턴스에서 웹사이트를 크롤링하여 S3에 저장하기 위해서는 우선 로컬 컴퓨터에서 작업한 R코드를 R스크립트로 작성한다. 그리고 나서 우분투 스케쥴러 프로그램인 crontab을 사용하여 주기적으로 크롤링하여 가져온다.

2 크롤링 R 코드 스크립트 변환

네이버 축구 K리그다음 축구 K리그를 통해서 데이터를 제공하고 있지만, FC안양, 삼성블루윙즈 웹사이트를 통해서 직접 데이터를 긁어오는 것도 좋은 방법인듯 싶다. 이유는 웹사이트가 단순해서 크롤링 기본기술로 쉽게 데이터를 긁어올 수 있다는 점이 장점이 된다. 유사한 방식으로 전구단 웹사이트에서 데이터를 가져와서 정제하면 K리그 전체 경기데이터를 얻을 수 있을 것으로 파악된다. 기술적으로 그렇다는 것으로 저작권을 비롯한 각종 법률적인 사항은 사전에 충분히 확인할 것을 추천한다.

anyang_crawl.R 파일명으로 쉘에서 호출하면 독립적으로 돌아갈 수 있도록 팩키지 설치부터 크롤링 결과 저장까지 자동화시킨다.

anyang_crawl.R R 스크립트를 R CMD BATCH 명령어로 실행시키게 되면 anyang_crawl.log 로그파일에 실행과정 로그가 찍히게 되고, 크롤링 R 스크립트가 실행된 시간이 기록된 .csv 파일이 생성된다.

3 EC2에서 S3 저장

Amazon Simple Storage Service (S3) API Client를 팩키지를 활용하여 S3 버킷에 RStudio IDE를 통해 접근이 가능하다.

S3 버킷 접근을 위한 키값 설정을 한 후에 put_object() 함수를 사용해서 아마존 AWS S3 버킷에 EC2 인스턴스에 저장된 데이터를 이동시킨다. 버킷명과 디렉토리는 swcarpentry/football이 된다.

S3 버킷 접근을 위한 키값 설정을 EC2 인스턴스에도 동일하게 해준다. 예를 들어,

Rprofile.site 파일 설정

Rprofile.site 파일에 “AWS_ACCESS_KEY_ID”, “AWS_SECRET_ACCESS_KEY”, 자격증명(credentials)을 저장시킨다.

동일하게 실생시키게 되면 파일이 시각까지 넣어 EC2 인스턴스에도 저장됨이 확인된다. S3 버킷도 동일하게 확인해 보자.

S3 Management Console로 들어가서 제대로 크롤링 결과가 저장되는지 확인한다.

S3 버킷 EC2 실행

4 crontab 자동화

마지막으로 crontab 명령어를 실행하여 1분마다 실행되도록 자동화시킨다. 이를 위해서 crontab -e 명령어를 통해서 anyang_crawl.sh을 최초 1분마다 테스트한다.

anyang_crawl.sh 파일은 앞서 쉘 명령라인에서 실행시킨 명령어를 절대경로로 지정하여 쉘스크립트를 작성한다.

1분단위로 정상적으로 웹페이지를 크롤링하여 가져오는 것이 확인되면 0 7 * * * /home/rstudio/anyang_crawl.sh 와 같이 crontab 명령어를 변경시켜 매일 아침 7시에 크롤링하도록 작업을 바꿔 안정화 시킨다.

S3 버킷 EC2 실행