인도 정부 투자 포털의 프로젝트 19,889건을 41개 항목으로
인도 전역의 투자 프로젝트가 올라오는 정부 포털에서 전체 프로젝트를 모으고, 흩어져 있던 상세 정보를 41개 항목의 표 하나로 세웠습니다. 담당자가 쓸 수 있도록 실행 파일로 넘겼습니다.
수집 건수
프로젝트 개별 조회 에서 19,889건 · 41개 항목 (으)로
배경
인도의 투자 프로젝트 정보는 정부가 운영하는 India Investment Grid에 공개되어 있습니다. 문제는 그것이 프로젝트 하나당 한 페이지씩 흩어져 있다는 점입니다. 어느 주(州)에서 어떤 분야에 얼마가 움직이는지 보려면 페이지를 하나씩 열어야 했습니다.
현장에서 본 것
연구에 필요한 것은 개별 프로젝트가 아니라 전체의 분포였습니다. 그런데 포털은 개별 조회를 전제로 만들어져 있어서, 분야별·단계별로 갈라 보려면 사람이 먼저 전부 옮겨 적어야 했습니다. 프로젝트 수를 생각하면 그 작업은 시작할 수 없는 종류의 일이었습니다.
정의한 문제
모으는 것보다 항목을 맞추는 것이 어려운 일이었습니다. 프로젝트마다 채워진 항목이 다르고, 사업비는 통화와 단위가 섞여 있으며, 같은 뜻의 값이 다른 이름으로 들어 있었습니다. 표 하나로 세우려면 이 차이를 먼저 정리해야 했습니다.
만든 것
- 전체 프로젝트 수집 — 41개 섹터에 걸친 프로젝트를 빠짐없이 모았습니다
- 41개 항목으로 정규화 — 섹터·세부섹터·사업 단계·총사업비·주(州)·시행 방식· 추진 유형·완공 예정일 등, 흩어져 있던 값을 같은 열에 세웠습니다
- 실행 파일로 배포 — 담당자가 파이썬 환경 없이 실행할 수 있도록 넘겼습니다
막아 둔 것
이만한 양을 받다 보면 반드시 일부가 실패합니다. 문제는 실패하느냐가 아니라 실패한 것을 나중에 찾을 수 있느냐입니다.
- 실패한 주소를 따로 남깁니다 — 요청이 끊기거나 응답이 오지 않으면 그 주소를 별도 파일에 기록합니다. 수집은 계속 진행됩니다
- 그 목록만 다시 받는 스크립트를 함께 만들었습니다 — 전체를 처음부터 다시 돌릴 필요가 없습니다. 두 번째 수집은 실패한 것만 대상으로 합니다
- 다시 받은 결과도 날짜를 붙여 보관합니다 — 무엇을 언제 메웠는지가 남습니다
- 동시에 12건씩 받되 요청마다 시간 제한을 둡니다 — 한 건이 응답하지 않아도 전체가 멈추지 않습니다
결과
19,889건을 41개 항목으로 정리했습니다. 그중 총사업비 값이 확인된 건이 19,087건입니다.
섹터별로는 도로·고속도로가 4,180건으로 가장 많았고, 상하수·폐기물 2,264건, 부동산 1,480건, 보건 1,271건, 교육 954건, 철도 920건 순이었습니다. 사업 단계는 개발 중·시행 중·완료 등 5종으로 갈라집니다.
같은 방식으로 만든 다른 일은 웹 데이터 수집에 모아 두었습니다.
사실 출처
납품 산출물 엑셀