본문 바로가기
Data Analysis/청소년수련활동인증제

e-청소년 사이트 스크래핑

by mansoorrr 2023. 8. 18.

공공api를 활용해 데이터를 수집하여 분석 하였지만 분석할 수 있는 건덕지가 많지 않았다. 또한 인증제에 대한 이론적 배경과 관련하여 분석하기 위해 서는 다른 방법으로 데이터를 수집할 필요가 있어 보였다. 따라서 e-청소년 사이트에 올라와있는 인증활동을 직접 스크래핑하여 데이터를 수집하기로 했다. 

 

[e-청소년 사이트]

 

사이트는 아래 사진 처럼 인증 프로그램이 나열되어있고, 활동들에 대한 정보가 형식에 맞춰 나열되어있다.

 

청소년활동정보서비스 e청소년 - <a href='/youth/act/actSearch/allActSearchLst.yt'>청소년활동</a> > <a href='/yo

청소년자원봉사(DOVOL), 청소년수련활동신고제/인증제, 국제성취포상제 기록관리 등의 청소년활동 종합안내

www.youth.go.kr

 

1. 테이블 구성

데이터를 수집하기 위해 아래와 같이 테이블을 만들었다. 테이블에 대한 필드들의 설명은 다음과 같다.

 

가. orgInfo(기관정보)

  - idx: index

  - orgName: 기관명

  - addr: 주소

 

나. pgInfo(프로그램정보)

  - idx: index

  - orgInfo_idx: orgInfo index

  -  pgcode: 프로그램 코드(unique)

  - opMethod: 운영방식

  - avArea: 활동영역

  - regDate: 인증일

  - avDate: 실시일

  - pgName: 프로그램 이름

 

다. pgDetail(프로그램 세부정보)

  - idx: index

  - pgCode: 프로그램 코드(unique)

  - avRegion: 활동지역

  - peopleNum: 참여인원

  - age: 연령(초, 중, 고, 대, 일반)

  - price: 참가비

  - sleepOk: 숙박여부

 

2. 데이터 수집

데이터 수집은 Python을 활용해 수집하였다. BeautifulSoup라이브러리와 requests라이브러리를 활용하여 수집하였다.

orginfo테이블과 pgInfo테이블의 경우 사이트에 들어가면 인증활동이 요약으로 보여지는 페이지에서 가능했지만 pgDetail테이블은 클릭해서 들어가야 정보를 모을 수 있었다.  최종적으로 수집된 데이터 수는 다음과 같다.

 

가. 기관수: 681개

나. 프로그램: 2993개

다. 인증기간: 2016.11.30 ~ 2023.08.18(2023.08.18에 수집함)

1) orgInfo(681개)  2) pgInfo(2993개)  3) pgDetail(2993개)

데이터 전처리는 Tableau Prep을 활용해 진행한다.

 

e청소년_데이터 전처리

Tableau Prep을 이용해 e청소년 사이트에서 수집한 데이터를 전처리 한다. 먼저 Tableau Prep에 mysql을 연결하여 db를 불러온다. 나는 3개의 테이블이 조회된다. orgInfo 테이블과 pginfo테이블을 join 한다.

hiphan-mansoorrr.tistory.com

 

[수집 코드]

https://github.com/RyuMinSu/YouthActivityCertification/blob/master/orgInfo.py