api - 웹페이지로 서버에 부담을 주는 것보다 데이터를 가져오기 좋음
네이버 api - python 예제를 제공해줌
client_id
urllib.parse.quote("~") : 한글이 들어갔을 때 utf-8 인코딩을 맞추기 위한 것
query
response.get
# '요청변수' 의 옵션을 사용해 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은 리스트
#안의 요소는 데이터프레임