오늘은 Selenium을 사용해서 미세먼지 데이터 크롤러를 만들어보자.
OpenAPI 사용하기
우선 미세먼지 데이터를 크롤링해오기 위해서는 당연하게도 미세먼지 현황에 대한 데이터가 필요할 것이고 이러한 데이터는 OpenAPI(누구나 사용할 수 있는 API)를 통해 얻을 수 있다. 필자는 '서울 열린데이터광장'에서 제공하는 '서울시 권역별 실시간 대기환경 현황'이라는 공공데이터를 사용해 크롤러를 제작해보았다.
data.seoul.go.kr/dataList/OA-2219/S/1/datasetView.do
이러한 OpenAPI의 URL은 보통
'http://openAPI.seoul.go.kr:8088/(인증키)/xml/RealtimeCityAir/1/5/'
와 같은 형식을 갖는다. 여기서 '인증키'라고 적힌 부분에 자신이 발급받은 인증키를 입력하기만 하면 자신만의 URL을 얻을 수 있다. 이해를 돕기 위해 예시를 들자면 자신의 인증키가 '1234'라면
'http://openAPI.seoul.go.kr:8088/1234/xml/RealtimeCityAir/1/5/'
이라는 URL을 얻을 수 있을것이다. 인증키의 경우에는 '데이터 정보' 아래 '미리보기'에서 'OpenAPI'를 클릭하고 '인증키신청'으로 들어가 약관동의 및 활용용도를 작성하면 발급받을 수 있다.
활용용도 등의 기입란의 경우 엄청 중요한 것은 아니니 많은 시간을 투자할 필요는 없다.
인증키를 발급받았다면 인증키를 사용해 URL로 들어가보자.
대기상태와 관련된 다양한 수치들이 보인다. 우리는 이중 어디에서의 미세먼지 농도인지에 대한 '위치' 정보와 '미세먼지 농도', '초미세먼지 농도' 정보 정도만 얻으면 된다. 때문에 각 정보들을 담고 있는 태그들을 찾아 기존에 항상 해왔던 방식인 Requests를 사용하여 데이터 크롤링을 시도해보았다. 하지만 웬걸?
태그가 아무것도 담고있지 않다는 에러가 발생했다... 계속해서 태그와 코드를 확인해봤지만 이 둘에는 전혀 문제가 없었다. 때문에 왜 그런지에 대해 계속 고민하다가 혹시나 하는 생각에 Selenium을 사용해보니 코드가 정상적으로 동작하기 시작했다. 결과적으로 에러가 발생한 이유는 OpenAPI의 URL이 '동적인 페이지'였기 때문으로 추측되었다. 서버에 미리 저장된 '정적인 페이지'와는 달리 '동적인 페이지'는 상황과 시간, 사용자의 요청 등에 따라 웹페이지가 가공되어 보여지기 때문에 정적인 페이지처럼 Requests를 통해 데이터를 가져오기는 어렵고 Selenium과 같이 동적인 페이지를 크롤링할 수 있게 도와주는 도구를 사용해야한다.
Selenium 사용하기
그렇다면 Selenium을 사용하는 방법을 알아보도록 하자. 우선 Selenium을 사용하기 위해서는 Selenium 라이브러리와 Chrome Driver을 다운받아야한다. 물론 브라우저에 따른 드라이버를 설치하면 되지만 Chrome이 가장 보편적으로 사용되는듯하다.
우선 Selenium 라이브러리를 설치하는 방법의 경우 cmd에서 Python이 설치된 폴더로 이동한 뒤
pip install selenium
명령어를 입력하여 설치할 수 있다. Python에서 라이브러리를 설치하는 방법에 대해서는 나중에 따로 다룰 예정이다.
다음으로 Chrome Driver는 아래 링크에서 다운받을 수 있다.
chromedriver.chromium.org/downloads
링크에 처음 들어가면 버전을 고르는 페이지가 나온다.
이때 버전을 선택할 때에 주의해야할 점은 자신의 컴퓨터에 깔려있는 Chrome의 버전과 동일한 버전의 드라이버를 다운받아야 한다는 것이다. Chrome의 버전 확인은 브라우저 오른쪽 위에서 '더보기 - 도움말 - Chrome 정보'에서 확인할 수 있다.
필자의 컴퓨터에는 89버전의 Chrome이 설치되어있기 때문에 Driver도 마찬가지로 89버전을 설치했다. 버전이 다를 경우 코드가 전혀 동작하지 못하므로 반드시 버전을 일치시켜 주어야한다(필자가 겪었던 고통을 겪지 않으려면...).
버전을 선택했다면 자신의 OS에 맞는 파일을 선택해 다운받아준다.
다운로드 후 압축을 풀고 chromedriver.exe이 위치한 디렉토리를 잘 기억해준다. Python 코드를 작성할 때에 이 디렉토리 위치가 사용된다.
이로써 Selenium을 사용할 준비가 모두 갖추어졌다. 이제 실제로 파이썬에서 selenium을 사용해보자.
'개인공부 > 데이터 사이언스' 카테고리의 다른 글
로지스틱 회귀 (0) | 2022.03.14 |
---|---|
최근접 이웃(K-Nearest Neighbor) 알고리즘을 이용한 종양 판별 모델 만들기 (0) | 2021.10.03 |
신뢰도 높은 리뷰 탐색 프로젝트(파이어베이스, 파이썬) (0) | 2021.03.23 |
Selenium을 이용한 미세먼지 크롤러 만들기(2) (0) | 2021.03.18 |
네이버 e북 Top100 크롤링하기 (0) | 2021.03.15 |