[AIB] 네이버 쇼핑 오픈 API 이용한 최저가 검색 코드 작성

ysk1230·2023년 4월 13일
0
import os
import sys
import urllib.request
import pandas as pd
import json
import re


client_id = "ID넣기"
client_secret = "키값넣기"
query  = urllib.parse.quote(input("검색 질의: "))
idx = 0
display = 100
start = 1 
end = 1000

shop_df = pd.DataFrame(columns=("Title", "Link", "Image", "Low price", "High Price", "Mall Name", "Product Id", "Product Type", "Maker", "Brand"))

for start_index in range(start, end, display):
    url = 'https://openapi.naver.com/v1/search/shop?query=' + query \
          + "&display=" + str(display) \
          + "&start=" + str(start_index)

    request = urllib.request.Request(url)
    request.add_header('X-Naver-Client-Id', "Hewe5vgmlLvWs_ubCDhs")
    request.add_header('X-Naver-Client-Secret', "u8mu84aRwJ")
    response = urllib.request.urlopen(request)
    rescode = response.getcode ()
    if (rescode==200) :
        response_body = response.read()
        response_dict = json.loads(response_body.decode('utf-8'))
        items = response_dict['items']
        for item_index in range(0, len(items)):
            remove_tag = re.compile('<.*>?>')
            title = re.sub(remove_tag, '', items[item_index]['title'])
            link = items[item_index]['link']
            image = items [item_index]['image']
            low_price = items[item_index]['lprice']
            high_price = items[item_index]['hprice']
            mall_name = items[item_index]['mallName']
            product_id = items[item_index]['productId']
            product_type = items[item_index]['productType']
            maker = items [item_index]['maker']
            brand = items[item_index]['brand']
            shop_df.loc[idx] = [title, link, image, low_price, high_price, mall_name, product_id, product_type, maker, brand]
            idx += 1
    else:
        print("Error Code:" + rescode)

shop_df

최종본

import os
import sys
import urllib.request
import pandas as pd
import json
import re

client_id = "ID넣기"
client_secret = "key넣기"
queries = ['원피스','청바지','후드티', '트위드자켓', '티셔츠', '커플잠옷', '블라우스', '니트', '맨투맨','트렌치코트', '가디건', '반바지', '반팔티', '크롭자켓', '스커트']
idx = 0
display = 100
sort = 'dsc'
start = 1
end = 1000

shop_df = pd.DataFrame(columns=("Title", "Link", "Image", "Low price", "High Price", "Mall Name", "Product Id", "Product Type", "Maker", "Brand", "category1", "category2","category3","category4"))

for query in queries:
    for start_index in range(start, end, display):
        url = 'https://openapi.naver.com/v1/search/shop?query=' + urllib.parse.quote(query) \
              + "&display=" + str(display) \
              + "&start=" + str(start_index)

        request = urllib.request.Request(url)
        request.add_header('X-Naver-Client-Id', client_id)
        request.add_header('X-Naver-Client-Secret', client_secret)
        response = urllib.request.urlopen(request)
        rescode = response.getcode()
        if (rescode == 200):
            response_body = response.read()
            response_dict = json.loads(response_body.decode('utf-8'))
            items = response_dict['items']
            for item_index in range(0, len(items)):
                remove_tag = re.compile('<.*>?>')
                title = re.sub(remove_tag, '', items[item_index]['title'])
                link = items[item_index]['link']
                image = items[item_index]['image']
                low_price = items[item_index]['lprice']
                high_price = items[item_index]['hprice']
                mall_name = items[item_index]['mallName']
                product_id = items[item_index]['productId']
                product_type = items[item_index]['productType']
                maker = items[item_index]['maker']
                brand = items[item_index]['brand']
                category1 = items[item_index]['category1']
                category2 = items[item_index]['category2']
                category3 = items[item_index]['category3']
                category4 = items[item_index]['category4']
                shop_df.loc[idx] = [title, link, image, low_price, high_price, mall_name, product_id, product_type, maker, brand, category1, category2, category3 , category4]
                idx += 1
        else:
            print("Error Code:" + rescode)

0개의 댓글