Web Crawling(웹 크롤링)_동적 페이지_네이버 데이터랩_검색어 시각화 (python)

juyeon·2022년 8월 5일
0

크롤링

목록 보기
4/13

네이버 데이터랩

Post 방식, API 이용

API란?

: application programming interface

  • 서비스에서 데이터를 제공하는 공식적인 방법으로, api를 이용한다.
  • api 이용 수집이 가능하다면, 이 방법을 사용하는게 더 좋다.

requests package

import requests, json
import pandas as pd

절차

1. 서비스에 app을 등록하기

  • 네이버 디벨로퍼: https://developers.naver.com
  • app 등록 > REST API 키: CLIENT ID
    • 네이버 로그인 > 보안 > CLIENT SECRET 생성
Client_ID, Client_Secret = "내 아이디", "내 시크릿"

2. URL과 application key 값을 받아온다.

  • api 문서 확인해야함
  • 서비스 입장에서는 "최소한 내가 누구한테 데이터를 제공해주는지는 알아야지?" 란 뜻

# 2. document: url, params, headers
url = "https://openapi.naver.com/v1/datalab/search"

params = {
    "startDate": "2021-07-01",
    "endDate": "2022-07-31",
    "timeUnit": "month",
    # array(JSON): array를 json, 그니까 파이썬에서는 dict 타입으로 넣어라
    "keywordGroups" : [
        {"groupName": "파리바게트", "keywords": ["파리바게트", "파리바게뜨", "파리스바게트", "파리스바게뜨", "빠리바게트", "빠리바게뜨", "빠바", "파바", "Paris Baguette", "paris baguette"]},
        {"groupName": "뚜레주르", "keywords": ["뚜레주르", "뚜레쥬르", "뜌레주르", "뜌레쥬르", "뚜주", "뚜쥬", "뜌쥬", "Tous Les Jours", " tous les jours"]},
    ]
}

headers = {
    "Content-Type": "application/json",
    "X-Naver-Client-Id": Client_ID,
    "X-Naver-Client-Secret": Client_Secret
}

3. JSON 형식의 str 데이터로 가져오기

: 대부분 JSON 포맷으로 데이터를 보내줌

  • app_key가 없으면 요청이 거절됨
  • json.dumps(): 인터넷 트래픽에서는 영문, 숫자, 특수문자만 사용 가능
    한글과 같은 문자를 인코딩(영문, 숫자, 특수문자). 한글이 아니면 이렇게 변환할 필요 없음
response = requests.post(url, json.dumps(params), headers = headers)
response

4. DataFrame으로 변환하기

data = response.json()["results"]
df = pd.DataFrame({
    "date": [period["period"] for period in data[0]["data"]],
    "Paris_Baguette": [ratio["ratio"] for ratio in data[0]["data"]],
    "Tous_Les_Jours": [ratio["ratio"] for ratio in data[1]["data"]],
})

5. 시각화

df.plot(figsize = (20, 10))

profile
내 인생의 주연

0개의 댓글