□ 목적 : 네이버 쇼핑몰에 등록된 품목(사용자가 조회한 키워드) 추출
□ 활용 라이브러리
○ requests : API에 요청 및 응답으로 데이터 크롤링을 위해 활용
○ openpyxl : 엑셀저장을 위해
□ API 중 http매서드 파라미터 참고사항
*링크: https://developers.naver.com/docs/serviceapi/search/shopping/shopping.md#%EC%87%BC%ED%95%91
○ 해당 글 작성자는 요청 url + display, start 파라미터를 사용함
- 해당 코드(https://openapi.naver.com/v1/search/shop.json?query=노트북'&display=100&start=100)를 아래 코드와 같이 변환
- 위 코드를 해석하면 네이버 쇼핑에 노트북을 100개까지 표시하고 검색시작위치는 100부터 하겠다라는 의미임.
- 이를 맨아래 코드와 같이 작성하여 1 ~ 1000번째까지 값을 크롤링함
target_api = 'https://openapi.naver.com/v1/search/shop.json?query='+ target_word + '&display=100&start='+ str(start_num)
* 세부내용 아래 코드 참조요망
□ status_code 상태코드
○ request를 보내고 응답온 결과 상태값의 코드에 따라 기능이 동작하도록 처리
○ 코드참고링크 : https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C
○ 해당 글 작성자는 정상을 의미하는 200일때 크롤링해라 라는 코드를 작성하였음
□ openpyxl 세부내용은 작성자의 블로그 또는 아래 링크로 참고요망
○ 링크 : https://dandora-90.tistory.com/152
□ 결과물
#라이브러리 호출
import requests
import openpyxl
#X-Naver-Client-Id&Secrete 변수지정
personal_Id = 'X-Naver-Client-Id 입력'
personal_Pw = 'X-Naver-Client-Secret 입력'
#naver api 요청 header 값
naver_header = {
'X-Naver-Client-Id' : personal_Id,
'X-Naver-Client-Secret' : 'A5WJqEk6ya'
}
#엑셀파일 세팅
excel_data = openpyxl.Workbook() #파일생성
excel_sheet = excel_data.active #시트 선택 / 엑셀 엑티브 가져오기
excel_sheet.column_dimensions['A'].width = 10 #엑셀 A열 너비 설정
excel_sheet.column_dimensions['B'].width = 10 #엑셀 B열 너비 설정
excel_sheet.append(['구분','브랜드명']) #위에서 지정한 A,B열의 필드명 지정
#□■□■크롤링 부분□■□■
#검색 키워드
target_word = input('품목명을 입력해주세요\t:\t')
start = 1 #검색 시작위치번호 설정을 위한 초기값
num = 0
for index in range(10):
start_num = start + (index * 100)
#요청 주소 / display 수만큼 출력
target_api = 'https://openapi.naver.com/v1/search/shop.json?query='+ target_word + '&display=100&start='+ str(start_num)
#요청 정보 naver 서버로 보내기
request_data = requests.get(target_api, headers = naver_header)
print('데이터 요청보냄')
#응답받은 데이터 변수처리
get_data = request_data.json()
#페이지별 상태 처리
if request_data.status_code == 200:
print('성공입니다.')
for v in get_data['items']:
num += 1
excel_sheet.append([num, v['brand']]) #엑셀 추가시 행기준 리스트형식으로 추가후 다음행으로 저장되기때문에 리스트화함
else:
print('오류입니다.')
excel_data.save(target_word + '_rank.xlsx') #파일명 및 형식 지정 후 저장. 경로지정을 안하면 현재 코드파일위치에 저장됨
excel_data.close() #반드시 저장후 종료
'Python > Python_Crawling' 카테고리의 다른 글
특정 영역의 하위태그별 데이터 크롤링 (0) | 2024.01.28 |
---|---|
공공데이터 포탈 API (0) | 2024.01.22 |
네이버 API : 파이썬 코딩 (1) | 2024.01.21 |
API/JSON 이란?(+postman 활용 데이터 get) (0) | 2024.01.19 |
셀레니움 : 다음이미지 마우스호버 및 사진별 캡쳐 (0) | 2024.01.19 |