[웹 크롤링] 네이버 API 활용 (2) 데이터랩(쇼핑인사이트)

bucket ·2023년 12월 4일
0

웹 크롤링

목록 보기
6/6

💡1. 네이버 API 신청하기

네이버 오픈 API는 파파고, 검색 등 다양한 기능을 제공한다.

이번에는 네이버 쇼핑 데이터를 수집하기 위해 데이터랩(쇼핑인사이트) API를 사용해보려고 한다.

(API 신청은 링크 참조)


신청을 마치면 "내 애플리케이션" 에서 위 사진과 같이 client_id, secret 정보, API 호출 사용량을 확인할 수 있다.

API 호출을 위해서는 client_id, secret이 필요하므로 따로 저장해두면 매번 들어가지 않아도 된다.

(client_id, secret을 외부에 노출하면 개인 정보 유출의 위험이 있기에 주의해야 한다.)


💡2. 분야별 트렌드 조회 API 호출하기

공식 문서에 있는 예시를 토대로 "패션의류"분야의 트렌드 조회 API를 코로나 전, 후 그리고 현시점을 파라미터로 넣어 총 세 번 호출했다.

client_id = ""
client_secret = ""

def category_search(startDate, endDate, timeUnit, name, param):
    url = "https://openapi.naver.com/v1/datalab/shopping/categories"
    headers = {
        "X-Naver-Client-Id" : client_id, 
        "X-Naver-Client-Secret" : client_secret,
        "Content-Type": "application/json"
    }
    data = {
        "startDate": startDate,
        "endDate": endDate,
        "timeUnit": timeUnit,
        "category": [
            {"name": name, "param": [param]}
        ],
        "device": "",
        "gender": "",
        "ages": []
    }
    
    response = requests.post(url, headers=headers, json=data)
    if response.status_code == 200:
        print("API call successful")
        print(response.json())
    else:
        print(f"API call failed with status code {response.status_code}")
        print(response.text)
    result = response.json()
    return result
before_result = category_search(startDate, endDate, timeUnit, name, param)
during_result  = category_search(startDate, endDate, timeUnit, name, param)
after_result = category_search(startDate, endDate, timeUnit, name, param)
print("before_result: {}".format(before_result['results'][0]['data']))
print("during_result: {}".format(before_result['results'][0]['data']))
print("after_result: {}".format(before_result['results'][0]['data']))

before_result : [{'period': '2017-08-01', 'ratio': 82.71414}, {'period': '2017-09-01', 'ratio': 100}]
during_result: [{'period': '2020-08-01', 'ratio': 83.952}, {'period': '2020-09-01', 'ratio': 100}]
after_result:[{'period': '2023-08-01', 'ratio': 95.6374}, {'period': '2023-09-01', 'ratio': 100}]

  • 코로나 이전의 클릭량인 before_result의 ratio는 82.71414에서 100으로 증가했다.
  • 코로나 기간의 클릭량인 during_result의 ratio는 83.952에서 100으로 증가했다.
  • 코로나 이후의 클릭량인 after_result의 ratio는 95.6374에서 100으로 증가했다.

각 기간에 대해 'ratio'는 초기 값에서 상승했다. 이는 시간이 지남에 따라 해당 지표가 향상되고 있다는 일반적인 패턴일 수 있다.

또 코로나 이후의 클릭량이 증가했고, 특히 after_result에서의 'ratio' 상승 폭이 높기 때문에, 이는 코로나 이후에 상품 또는 서비스에 대한 관심이 증가했다는 가능성을 시사할 수 있다. 그러나 클릭량 자체만으로 구매로 직결되었다고 단언하기는 어렵다.

탐험적 클릭인지 실제 구매 클릭인지 등을 고려해야 한다.

(만약 프로젝트 진행 시 클릭 = 구매 또는 클릭 = 관심도 라고 가설 설정해야 할 것 같다.)


💡3. 키워드별 트렌드 조회 API 호출하기

이번에는 공식 문서에 있는 예시를 토대로 키워드별 트렌드 조회 API를 호출했다.

앞서 예시처럼 "패션/의류" 키워드가 아닌 이번에는 "전기차 충전기"라는 키워드로 트렌드 조회를 해보았다.

client_id = ""
client_secret = ""

def keyword_search(startDate, endDate, timeUnit, category, name, param):
    url = "https://openapi.naver.com/v1/datalab/shopping/category/keywords"

    headers = {
        "X-Naver-Client-Id" : client_id, 
        "X-Naver-Client-Secret" : client_secret,
        "Content-Type": "application/json"
    }
    
    data = {
        "startDate": startDate,
        "endDate": endDate,
        "timeUnit": timeUnit,
        "category": category,
        "keyword" : [
            {"name" : name, "param" : [param]}
            
        ],
        "device": "",
        "gender": "",
        "ages": []
    }
    
    response = requests.post(url, headers=headers, json=data)

    if response.status_code == 200:
        print("API call successful")
        print(response.json())
    else:
        print(f"API call failed with status code {response.status_code}")
        print(response.text)
        
    result = response.json()
    return result
during_result = keyword_search(startDate, endDate, timeUnit, category, name, param)
after_result = keyword_search(startDate, endDate, timeUnit, category, name, param)
print("during_result : {}".format(during_result['results'][0]['data'])
print("after_result : {}".format(after_result['results'][0]['data'])

during_result = [{'period': '2020-08-01', 'ratio': 92.30769}, {'period': '2020-09-01', 'ratio': 100}]
after_result = [{'period': '2023-08-01', 'ratio': 100},{'period': '2023-09-01', 'ratio': 33.33333}]

  • 코로나 기간의 클릭량인 during_result의 ratio는 92.30769에서 100으로 증가했다. 이 기간 동안에는 ratio 값이 상승했다고 볼 수 있다.
  • 코로나 이후의 클릭량인 after_result의 ratio는 100에서 33.33333으로 감소했다.

코로나 이전에는 "전기차 충전기" 키워드 검색 클릭량이 상승하는 경향이 있었지만, 코로나 이후의 클릭량은 크게 감소했다. 감소는 여러 요인에 기인할 수 있으며, 이는 소비자 행동 변화, 경제적 영향, 시장 동향 등 다양한 원인을 반영할 수 있다.

최근 전기차 시장 동향을 살펴보니, 실제로 전기차 매출이 전세계적으로 감소하는 추세였다.


참고

0개의 댓글