[1~]Naver API

이재은·2024년 6월 18일

api - 웹페이지로 서버에 부담을 주는 것보다 데이터를 가져오기 좋음
네이버 api - python 예제를 제공해줌
client_id

urllib.parse.quote("~") : 한글이 들어갔을 때 utf-8 인코딩을 맞추기 위한 것

query
response.get

5강.

  1. 순서
    (1) get_search_url : url 만들기
# '요청변수' 의 옵션을 사용해 url 만들기
  display : 검색 결과 출력 건수 지정
  start : 검색시작 위치로 최대 1000개 까지 가능
  1000개 하고 싶다: 100개씩 10번
  (start를 1, 101, 201...)
  
 # 변수 
   api_node : 검색의 종류 (shop, blog..)
   search_text : 검색 단어
   start_num : 몇번째부터 검색
   disp_num : 몇개 출력
   
#출력 결과
"https://openapi.naver.com/v1/search/☆.(jason or xml)?query=☆&display=☆&start=☆&sort=☆"
# get_search_url
  encText = urllib.parse.quote("몰스킨")
  url = "https://openapi.naver.com/v1/search/shop?query=" + encText

  def gen_search_url(api_node, search_text, start_num, disp_num) : 
      base = "https://openapi.naver.com/v1/search"
      node = "/" + api_node + ".json"
      param_query = "?query=" +urllib.parse.quote(search_text)
      param_start = "&start=" + str(start_num)
      param_disp = "&display=" + str(disp_num)

      return base + node + param_query + param_start +  param_disp

  gen_search_url("shop", "TEST", 10, 3)
  > 'https://openapi.naver.com/v1/search/shop.json?query=TEST&start=10&display=3'

(2) get_result_onpage : get data on the page

- urllib : http 프로토콜에 따라서 서버의 요청/응답을 처리하기 위한 모듈
- urllib.request : 클라이언트의 요청을 처리하기 위한 모듈
- urllib.parser : url 주소에 대한 분석

def get_result_onpage(url): (request - response - read)
    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)
    
    return json.loads(response.read().decode("utf-8"))

(3) get_fields : convert pandas data frame

# for문으로 각 데이터를 불러와 저장 
# 리스트 컴프리 헨션 for문돌리고 개별에서 또 속성을 불러올때
#  delete_tag 

(4) delete_tag : convert pandas data frame

result_mol = []
for n in range(1, 1000, 100) :
   url = gen_search_url("shop", "몰스킨", n, 100) #1000개
   json_result = get_result_onpage(url)
   pd_result = get_fields(one_result)

   result_mol.append(pd_result)
   
result_mol = pd.concat(result_mol)

#result_mol은 리스트
#안의 요소는 데이터프레임
profile
Dare to be an optimist

0개의 댓글