khann's IT와 경제 블로그

반응형

직접 코로나 맵 사이트 만드는 방법, 우한 폐렴 데이터 수집 및 공유 파이썬

 

20200306 추가)
현재 질병관리본보의 사이트의 레이아웃이 약간 수정되었습니다.
그렇지만 기본 수집하는 과정은 동일하니 참고하시기바랍니다.

 

 

코로나 맵

최근 인기검색어에 코로나맵이 화제가 되고있습니다.

2019년 12월 12일 중국 후베이성 우한시의 화난수산물도매시장에서 처음 시작된 우한 폐렴 코로나바이러스가 구정이 지나고 급속도로 퍼져나갔고,

 

 

2020년 1월 2일 한국에서도 첫 확진자가 발생되었습니다.

그리고 현재 2020년 2월 2일 기준으로 국내 확진환자가 15명으로 늘어났고, 

조사대상상인 유 증상자가 총 414명으로 늘어났습니다.

 

 

그리고 2월 1일 인기검색어에 "코로나 맵"이라는게 올라왔습니다.

한 대학생이 만든 웹사이트로,

국내 우한폐렴 확진자의 이동경로와 격리중인 위치를 지도에 표시해주는 웹서비스입니다.

 

 

 

 

이 웹사이트에는 국내 확진환자와 이동경로를 지도로 표현해주는 단순한 웹이지만 국내에서 급격한 인기를 얻고있습니다.

 

그래서 데이터 분석에 관심이 있는 분들은 누구나 이와 같은 웹을 만들어서

웹 서비스 할 수 있도록 우한 폐렴 코로나 바이러스 맵을 같이 만들어보자는 의미에서 포스팅을 시작합니다.

 

 

먼저 코로나 맵을 만들기 위해서는 가장먼저 데이터를 획득해야합니다.

그래서 이번 포스팅에는 코로나 바이러스 국내 데이터의 데이터 수집해보는 과정을 담았습니다.

 

 

 

 

 

 

 

 

개발환경

먼저 이번에 코로나 맵을 만들어보면서 데이터 수집에 사용한 개발 환경입니다.

IED환경 : Jupyter

사용 언어 : Python

 

 

직접 코로나맵을 만들어보기 - 데이터 수집

먼저 저희가 수집해야할 데이터는 어떤게 있을까요?

 

1. 업데이트 시간
2. 국내 확진환자 수
3. 국내 확진환자 정보
4. 국내 확진환자 이동 경로
5. 국내 확진환자 격리 진료소
6. 국내 확진환자의 접촉자
7. 국내 조사대장(유상증자) 격리 중 + 격리 해제 인원

 

대략 이렇게 볼 수 있겠네요,,,

 

 

그럼 자료를 수집할 사이트에서 확인해 볼까요?

 

 

 

질병관리본부에서 코로나 데이터 수집 방법

 

1. 질병관리본부 홈페이지 방문

 

 

2. 질병관리본부 홈페이지에서

왼쪽의 신종 코로나 바이러스 감염증 클릭

 

 

 

 

 

3. 페이지 내에서 위 수집할 데이터가 어디에 있는지를 찾기

 

첫 페이지에서 1.업데이트시간과 2.국내 확진환자를 수집할 수 있겠네요.

 

 

그럼 이번엔 나머지 수집할 데이터를 찾으러 "보도자료"페이지로 들어가봅시다.

 

 

 

 

 

 

 

여기에서는 국내 발생 현황이 dom에서 list로 링크를 수집할 수 있습니다.

이 국내 발생 현황 정보는 날짜별로 계속 업데이트 되는 자료입니다.

 

 

그러면 이 자료를 한번 확인해볼까요?? 

맨 위의 "바이러스 국내 발생현황(3명 환자 추가확인)"을 클릭해줍니다.

 

 

 

 

아래와 같이 tb_contents class안에 3번부터 6번까지의 정보를 얻을 수 있겠습니다.

 

 

 

 

 

그리고 보도자료 중 다른 자료를 확인해보면 국내 조사대상 유상증자의 데이터도 아래와 같이 확인 할 수 있었습니다.

 

 

 

 

 

그러면 보도자료내에 모든 수집 가능한 데이터가 있음을 확인했습니다.

 

그럼 이제 크롤러를 만들어서 데이터를 수집해볼까요?

 

 

 


 

4. 크롤러를 만들어 데이터 수집

아까 웹페이지에서 데이터를 확인하면서 봤던 태그정보를 이용해서 수집합니다.

 

사용 라이브러리

requests
pandas
BeautifulSoup

 

 

 

 

 

 

1. "발생동향" 페이지에서 국내 발생현황 수집

 

크롤링 할 url 을 확인해주고(http://www.cdc.go.kr/linkCheck.es?mid=a21111050500),

requests로 크롤링 -> BeautifulSoup으로 html 형식으로 파싱,

그리고 데이터가 있는 부분의 태그를 찾아주시면 아래와 같이 수집할 수 있습니다.

 

In : 

 

Out:

 

 

 

2. "보도자료" 페이지에서 국내 발생 현황 수집하기

 

보도자료 페이지는 보도자료링크 리스트만 나열이 되어있고, 그 링크를 누르면 보도자료로 들어가는 방식으로 되어있습니다.

 

그래서 크롤링을 2번에 나눠 해야합니다.

보도자료의 링크를 추출해주고 그 링크로 다시 크롤링을 진행하면됩니다.

 

In:

Out:

 

 

위에서 예시로 출력된 html은 가장 상단에 있는 보도자료의 html입니다.

 

 

 

 

 

그럼 모든 보도자료의 html은 doms이라는 변수에 저장되었습니다.

 

 

 

모든 데이터는 수집이 되었습니다.

만약 정기적으로 업데이트 되는 웹이나 앱을 만들 계획이 있다면,

이렇게 만들어진 수집기를 자동으로 돌리면서 최신자료로 업데이트 시켜서 저장하면됩니다.

 

저장하는 방법은 DB를 이용하는 방법과, CSV 2가지정도로 볼 수 있습니다.

이번에는 Pandas를 이용해서 CSV로 추출하는 과정을 해보겠습니다.

 

 

수집데이터 저장

In:

Out:

 

 

 

 

 

 

 

수집데이터 CSV 파일 공유링크(구글드라이브)

 

 

수집데이터 이용

수집된 데이터를 이용한다면,

1. 데이터를 코로나 맵으로 시각화해서 만들어 웹이나 앱으로 만드는 경우
2. 데이터를 시계열 그래프로 시각화해서 시간 경과에 따른 국내 발병률 증가 지수 그래프를 만드는 경우
3. SNS 플러그인을 이용해서 신속한 최신정보를 업데이트 받는 앱을 만드는 경우
4. 우한 폐렴 관련 커뮤니티 앱을 만드는 경우

등 활용할 수 있겠습니다.

 

 

https://khann.tistory.com/81

 

마스크 알리미 사이트 크롬으로 분석하기 동작원리와 API 추출

마스크 알리미 사이트 크롬으로 분석하기 동작원리와 API 추출 마스크 알리미가 종일 화제입니다. 이 포스팅은 저의 궁금증으로 시작했습니다. 아래 포스팅을 보시면 마스크 알리미 서비스의 동작원리와 마스크 알..

khann.tistory.com

 

 

반응형

이 글을 공유합시다

facebook twitter googleplus kakaostory naver