나의 분석일기 ♬

[웹 크롤링]OPEN API 본문

데이터 분석/Crawling

[웹 크롤링]OPEN API

Screening Jang 2024. 5. 30. 14:58

[웹 크롤링]OPEN API

REST API

  • HTTP URI를 통해 자원을 명시하고, HTTP Method (POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD OPERATION을 적용하는 것을 의미한다.
  • 즉, REST는 자원 기반의 구조 (ROA: Resource Oriented Architecture) 설계의 중심에 Resoure가 있고 HTTP Method를 통해 Resource를 처리하도록 설계된 아키텍쳐를 의미한다.
  • 웹의 모든 자원에 고유한 ID인 HTTP URI 를 부여한다.

- 영화진흥위원회 오픈 API 정보

url = https://www.kobis.or.kr/kobisopenapi/homepg/apiservice/searchServiceInfo.do

# 필수 라이브러리 불러오기
import requests
import json
import xmltodict # xml을 dict 형태로 저장하는 라이브러리
import getpass
# 전날 박스오피스 확인
search_url = "http://www.kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchDailyBoxOfficeList.json"
api_key = "***********************"
params = {"key": api_key, "targetDt": "20240528"}
response = requests.get(search_url, params)
movie_boxoffice_info = json.loads(response.text)

  • json_normalize 를 사용하여 간단하게 데이터프레임 만들기
from pandas import json_normalize
json_normalize(movie_boxoffice_info['boxOfficeResult']['dailyBoxOfficeList'])

 

- 네이버 오픈 API 정보

url : https://developers.naver.com/docs/common/openapiguide/

Naver Datalab 검색어 트랜드 가져오기

import os
import sys
import urllib.request
client_id = "~~~~~~~~~~~~" # 개발자센터에서 발급받은 Client ID 값
client_secret = "~~~~~~" # 개발자센터에서 발급받은 Client Secret 값


url = "https://openapi.naver.com/v1/datalab/search"
# 형식 입력(chatgpt을 통해 편하게 할 수 있음)
body = "{\"startDate\":\"2024-01-01\",\"endDate\":\"2024-05-29\",\"timeUnit\":\"date\",\"keywordGroups\":[{\"groupName\":\"엔비디아\",\"keywords\":[\"엔비디아\",\"NVIDIA\",\"GeForce\"]}],\"device\":\"pc\",\"ages\":[\"1\",\"2\"],\"gender\":\"f\"}";

request = urllib.request.Request(url)
request.add_header("X-Naver-Client-Id",client_id)
request.add_header("X-Naver-Client-Secret",client_secret)
request.add_header("Content-Type","application/json")
response = urllib.request.urlopen(request, data=body.encode("utf-8"))
rescode = response.getcode()
if(rescode==200):
    response_body = response.read()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)

json.loads(response_body)

 

Comments