본문 바로가기
웹(web)/크롤링(web scraping)

코로나확진자 웹사이트 최근 업데이트 시간 크롤링(worldometers.info/coronavirus)

by 바코94 2020. 5. 3.

 코로나 확진자 수를 가져오는 여러 가지 방법이 있다. 뉴스를 통해 확인하는 방법, 특정 사이트에 가서 가져오는 방법 등이 있을 것이다. 

 

 이번 글은 www.worldometers.info 에서 제공하는 coronavirus 정보가 언제 업데이트되었는지 그 시간을 가져오는 코드를 작성해 보려고 한다.

방법은 간단하다. 사이트를 분석해서 어떻게 정보를 가져올지 분석한 후 파이썬을 이용해서 크롤링 코드를 작성하면 된다. 사이트 분석은 크롬의 개발자 도구를 이용하며 파이썬 개발환경은 구글의 코랩을 이용하면 빠르게 개발할 수 있다. 사이트 분석은 정적인 웹사이트인지 아니면 동적인 웹사이트인지 구분하고 그에 따라 사용하는 도구를 바꾸면 크롤링이 완료된다. 이번 예시를 통해서 그림을 그려보도록 하자.

 

아래 사진은 사이트에 접속하였을 때 화면이다.

<worldometers 코로나 정보>

 

 이 사이트에서는 전 세계에 대한 정보를 제공하기 때문에 업데이트를 주기적으로 하는 것으로 보인다. 업데이트가 새로 되었을 때 하단의 표 정보를 가져오는 코드를 실행한다고 가정해보자. 업데이트가 새로 되었을 때만 사이트에서 제공하는 국가별 코로나 환자 정보를 가져오게 하는 코드를 실행하는 것이 효율적이다. 업데이트가 되어있지 않은데도 코드를 실행하면 자원이 낭비되기 때문이다. 

 

 본론으로 들어가서 이 웹사이트는 빨간색으로 표시된 부분에 시간이 존재한다. 이 정보를 얻기 위해서 시간 정보가 있는 영역만 선택하면 끝난다. 즉, 크롬 개발자 도구 같은 것으로 해당 영역을 클릭하면 html의 어디 부분인지 가리켜준다.

 

<크롬 개발자 도구를 이용한 영역 선택>

 

 우측에 개발자 도구의 짙어진 부분을 보면 화면에 보이던 영역을 선택된 것을 파악할 수 있다. html, css에 대한 기본적인 이해가 있어야 크롤링이 수월해지니 잘 모른다면 간단히 검색해보거나 필자의 블로그를 활용하길 바란다. 이 페이지는 사이트에 접속만 하면 시간 정보를 얻을 수가 있다. 따라서 시간 정보 영역을 위한 css selcetor만 찾으면 된다. 찾는 방법은 직접 계산해도 되고 개발자 도구 쪽 짙은 영역을 오른쪽 마우스 클릭하면 copy에 copy selector가 있다. 따라서 우리는 사이트 주소, 해당 부분의 selector를 얻었고 준비는 끝났다. 

 

구글 코랩 크롤링 코드

 

 [2], [3]은 라이브러리를 설치하는 과정이다. [4]는 필요한 라이브러리를 임포트하고 [5]에서 사이트의 텍스트를 가져온다. [6]에서 텍스트를 태그와 속성값을 통해서 태그 영역을 가져왔다. 이후 파이썬의 슬라이싱을 통해 시간 정보를 가져온다. 

 

 앞서 셀렉터만 알면 된다고 했는데 태그+속성 값을 통해 요소를 찾은 것이 이상하게 보일 수도 있다. 결국 셀렉터를 사용하던지 태그+속성 값의 조합으로 가져오던지 크롤링이라는 것은 웹사이트의 프론트엔드 코드가 변경되면 다시 수정해서 사용해야 한다. 따라서, 사이트의 특정 정보를 가져오는데 포커스를 맞추면 된다. 셀렉터가 변경될지는 저 사이트를 유지보수할 사람만이 알 것이다. 따라서 변경되고 정보가 바뀌는 것을 감지하는 코드를 적는 것도 필요하겠다.