본문 바로가기
HTML & CSS

웹 페이지 크롤링 작업 수행 위한 기초 지식 이해하기 - OPEN API 이용하기

by ★√★ 2021. 2. 13.

안녕하세요, Davey 입니다. 오늘 포스팅 할 내용은 웹 페이지에서 크롤링 작업 수행을 위해서 필요한 OPEN API를 어떻게 이용하는 지에 대한 내용입니다. 이 전에 제가 미션을 가지고 크롤링 작업을 했을 때는, 개발자 도구에서, class 와 id 를 분석해서 원하는 내용을 가져 오는 작업을 했었는데, 이런 OPEN API를 웹페이지에서 제공을 한다면, 굳이 그렇게 힘들게 코드를 분석하지 않고, 원하는 데이터를 가져올 수가 있는 장정이 있습니다. 그럼 일단 API에 대해서 먼저 설명을 드리면서 포스팅을 시작하도록 하겠습니다. 

 

1. API (Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스) 란?

API(Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스)는 응용 프로그램에서 사용할 수 있도록, 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻하며, 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공합니다.

 

 이전 포스팅에서는 웹페이지의 정보를 가져오는 것이지만, 이번에 말씀드리는 OPEN API는 어떤 DB에서 가져오는 작업이라고 생각하시면 됩니다. (이건 제가 나름대로 분석한 내용이고, 만약 API를 제공해주는 사이트에도, 웹페이지 - 웹페이지 정보를 모으는 것이라면, 그냥 중간 매개체를 통한 웹페이지 정보를 얻어 오는 것으로 이해하시면 됩니다.) 즉, 웹페이지나 DB에서 타 사용자가 원할하게 접속 할 수 있는 코드와 작업 권한을 제공하는 것이라고 이해하시면 더 이해가 쉬우 실 겁니다. 

 

[참조자료 : ko.wikipedia.org/wiki/API]

 

2. OPEN API 구성하는 웹사이트 선정 및 관련 권한 신청

: 여러 웹사이트가 있지만, 현재 OPEN API를 가장 많이 제공하는 웹사이트는 끝에 주소가

로 끝나는 주소라고 생각하시면 됩니다. 이 사이트 중에서 데이터 자료를 전문으로 제공해주는 웹사이트는 아래와 같습니다. 

 

 OPEN API 구성하는 웹사이트 : www.data.go.kr

 

- 주소를 통해서 접속을 하면 아래와 같은 창을 보실 수 있습니다. 여기에서 회원가입을 하시고, 다시 로그인을 해주셔야 합니다. 아래 화면은 이미 가입이 완료되어 로그인이 되어 있는 화면입니다.

 

 

- 로그인을 마치시면, 아래와 같은 경로로 따라가시면, OPEN API가 모여있는 메뉴에 들어가 실 수 있습니다. 아래 snap shot도 같이 참조하시면 도움이 되실 겁니다.

 

 [데이터 찾기] - [데이터 목록] 

 

- 아래 화면에 표시한 입력 창에 데이터 목록 검색어를 입력하고, 검색 결과에 따른 오프 API 항목 내용을 확인을 하시면 됩니다. 

 

 

- 그 중에서 자신이 사용하고 싶은 OPEN API 이용을 위한 활용신청을 하시면 됩니다. 저는 요즘에 코로나 때문에 캠핑에 대한 관심이 높아지고 있으니까, 캠핑 장소에 대한 내용을 제공하는 OPEN API를 신청해보도록 하겠습니다. 이름은, "한국관광공사_고캠핑정보 조회 서비스" 입니다. 그리고 아래로 내려가시면 상세 기능 정보 선택에서 모두 선택을 하였습니다. 이 부분은 어떤 부분까지 조회를 하고 싶은지 물어보는 항목이므로, 다 체크를 하시는 걸 추천 드립니다. "동의 합니다" 항목까지 체크를 하면 신청이 완료가 된 것입니다. 

 

- 신청이 완료가 되면, 아래와 같이 신청 내역과 활용 내역 등의 내용이 표시되는 화면으로 자동으로 전환이 됩니다. 그리고 자신이 신청한 항목에 대해서, "승인" 으로 표시가 되어 있으면 이제 사용하시면 됩니다.

- 신청 내역을 더블 클릭해서 들어가면 아래와 같이 "개발계정 상세보고" 화면이 나오는데, 이 화면에서, "일반 인증키" 항목을 이용을 하시면 됩니다. 그리고 예제나 추가적인 Manual Information을 위해서 아래 참고 문서를 꼭 참고 하셔야 합니다. 

 

3. OPEN API 이용한 파이썬 (python) 코드 구현 

:  OPEN API를 이용한 파이썬(python) 코드 구현할 수 있는 준비가 완료가 되었습니다. 일단 코드 구현에 앞서 위에 제가 설명드렸던 메뉴얼을 참고를 하셔야 합니다. 메뉴얼 문서를 열어보면 아래와 같이 활용 메뉴얼이라는 문구를 보실 수 있습니다. 

 

발췌 내용, 출처 : 한국관광공사_고캠핑정보_활용매뉴얼_v1.0.docx

 

그리고 아래로 쭉 내려가시면 아래와 같이 문서 내용을 가져 올 수 있는 예제 코드를 제공을 합니다. 이 부분을 복사하여 파이썬 코드에 입력을 하시면 됩니다. 

 

 

발췌 내용, 출처 : 한국관광공사_고캠핑정보_활용매뉴얼_v1.0.docx

 

- 위 정보를 이용해서 아래와 같이 코드를 구현 할 수 있습니다. 코드 하나 하나에 주석처리를 통해서 추가 설명해드리는 방향으로 진행하겠습니다. 


# requests 라이브러리를 선언을 함
import requests

# 인증키를 입력하는 변수 "Authorized_Key" 를 선언함.
Authorized_Key = '일반 인증키 복사한 내용 입력'

# End Point를 이용하여, xml or json 파일 형식 데이터를 추출하는 코드를 구현 (여기에서는 json 파일 형식임)

# Service code에 경우에는 개인마다 부여 바든 코드가 다르므로, format 함수를 이용하여, 변수를 통해서 입력하는 걸로 변환
Action01 = "http://api.visitkorea.or.kr/openapi/service/rest/GoCamping/basedList?ServiceKey={}&numOfRows=10&pageNo=1&MobileOS=ETC&MobileApp=TestApp&_type=json".formate(Authorized_Key)

# request.get 모듈을 통해 json 파일의 data를 "result01" 이라는 변수에 입력
result01 = requests.get(Action01)

# "result01" 에 잘 입력이 되었는지 print 함수를 통해서 재 확인
print(result01.text)

# "result01" 에 입력된 data를 json file를 extraction 하는 코드 (개인마다 소장하고 싶은 분들이 있을 수 있어서, 구현함.)
File_Extraction01 = open("C:\\File_Extraction01.json", 'w')
File_Extraction01.write(result01.text)
File_Extraction01.close()

일단 위 코드를 실행을 시켜 보면 아래와 같이 지정한 경로에 파일이 저장되는 것을 확인 하실 수 있습니다. 아래 snap shot 참조 부탁 드립니다. 

 

 

- 그런데 "result01.text" 항목을 print 한 내용을 살펴보면, "Service key is not registered error" 라는 문구를 확인 하실 수 있습니다. 이미 승인도 다 났는데, 왜 Error가 뜨는지 의아애 하실 겁니다. 이 부분을 설명 드리자면, 승인이 나더라도, 어느정도의 적용하는데 시간이 필요하기에, 충분하게, 1시간 뒤에 적용하셔야 활용이 가능합니다. 저도 이것 때문에 상당한 시간동안 계속 코드를 수정했었습니다;; 저 같이 시간 낭비 하자 마시길 바라겠습니다. 

 

 

 

 이상입니다. 지금까지 OPEN API 이용하는 방법에 대해서 알아봤습니다. 이것 저것 찾으면서 공부하다가 보니까, 무료로 이렇게 데이터를 제공하는 곳이 많다는 것을 알게 되었습니다. 나중에 파이썬 테스트 할 때 사용하시면 정말 유용할 것이라고 판단합니다. 동시에 이런 일자리도 있어서 여기에서 종사하시는 분들은 이 분야만 전문적으로 하는 건지 아니면 용역을 줘야 하는 건지에 대해서도 의문이 생기더라구요.

 

 전문적으로 프로그램을 만들지는 않지만, OPEN API 를 구성하고 만들어서 관련 데이터를 쉽게 여러 사람들에게 제공하는 일도 많은 노력과 지식이 필요할 것이라고 생각이 들었습니다. 무튼 하나 하나 배워나가면 어느 정도 성장을 하고 그 성장한 만큼 식견과 기회가 주어질 것이라고 생각합니다. 오늘도 공부하시느라고 수고 많이 하셨고, 항상 말씀 드리지만, 같이 공부하고, 같이 성장하시죠. 감사합니다. 

 

 제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다. 

[저작권이나, 권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다. 검토 후 수정 및 삭제 조치 하도록 하겠습니다. 그리고, 기재되는 내용은 개인적으로 습득한 내용이므로, 혹 오류가 발생할 수 있을 가능성이 있으므로, 기재된 내용은 참조용으로만 봐주시길 바랍니다. 게시물에, 오류가 있을때도, Comment 달아 주시면, 검증 결과를 통해, 수정하도록 하겠습니다.] 

728x90

댓글


// 내부링크를 현재창으로 열기 // Open internal links in same tab