[아이티윌 빅데이터 52기] LAB 12 | 웹 데이터 수집하기 | 카카오 검색 결과 수집
카카오 검색 결과 데이터 가져오기 | 사전 준비
STEP 1. 카카오 개발자 사이트에 들어와 로그인 한다
STEP 2. 키 발급을 위해 앱 생성창에 필요한 정보를 입력
STEP 3. 메뉴 > 앱 > 일반에서 REST API 키를 확인
STEP 4. 대카테고리 메뉴 > 문서 > REST API > 검색 에서 검색 결과 데이터를 가져올 수있는 REST API 관련 명세서 확인
STEP 1. 카카오 개발자 사이트에 들어와 로그인 한다

STEP 2. 키 발급을 위해 앱 생성창에 필요한 정보를 입력

STEP 3. 메뉴 > 앱 > 일반에서 REST API 키를 확인

STEP 4. 대카테고리 메뉴 > 문서 > REST API > 검색 에서 검색 결과 데이터를 가져올 수있는 REST API 관련 명세서 확인


#명세서 확인 사항
1) 메서드는 GET 방식으로, 기본 URL 확인

2) 요청 시 헤더에 Authorization 에 키 값 송출 필요
(설명상에는 자바 스크립트 형식으로 되어 있으므로 파이썬 형식으로 전환 필요)

3) 요청 쿼리 스트링은 쿼리 파라미터 메뉴에서 확인할 수 있음

4) 응답 결과 형태 유추 (리스트)

테스트
사이트 내 예제 대신 thunder client 를 통해 테스트
-GET 메서드
-필수 쿼리 파라미터 입력
-Headers 에 Authotization KakaoAK + 키값


============================================================================
카카오 검색 결과 데이터 가져오기
STEP 1. 라이브러리 참조하기
STEP 2. 요청 정보 확인
STEP 3. 웹 데이터 요청하기
STEP 4. 응답 결과 JSON 으로 변환하여 구조 확인
STEP 5. 응답 결과 데이터 프레임으로 구성하여 엑셀로 저장하기
STEP 1. 라이브러리 참조하기
requests 라이브러리와 pandas 라이브러리의 DataFrame 클래스를 참조한다
import requests
from pandas import DataFrame
STEP 2. 요청 정보 확인
API 명세를 확인하여 RESTful api에 전달할 정보를 변수로 정의한다
#요청 URL
url = "https://dapi.kakao.com/v3/search/book"
#QueryString 요청 변수
query ="파이썬"
page = 1
size = 50
# header 에 포함할 키
key = "{{키 값 입력}}"
STEP 3. 웹 데이터 요청하기
header 에 Authorization 항목을 추가하고, 쿼리 스트링 파라미터를 구성한다
#세션 객체 생성
with requests.Session() as session:
session.headers.update({
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36",
"Authorization" : "KakaoAK %s" %key
})
r=session.get(url,params={"query":query,"page":page,"size":size})
#HTTP 상태값이 200이 아닌 경우는 강제로 에러를 발생시켜 코드의 진행을 중단시킴
if r.status_code !=200:
msg ="[%d Error] %s 에러가 발생함" % (r.status_code,r.reason)
raise Exception (msg)
print(r)

STEP 4. 응답 결과 JSON 으로 변환하여 구조 확인
딕셔너리를 포함하는 리스트가 시작하는 위치를 파악한다 (documents)
mydict =r.json()
print(mydict)
STEP 5. 응답 결과 데이터 프레임으로 구성하여 엑셀로 저장하기
이후 추가 활용의 재사용성을 위해 해당 파일을 미리 저장해둔다
df=DataFrame(mydict['documents'])
df.to_excel ("카카오 책 검색 (%s).xlsx" %query)
