위와 같이 네이버 API 와 postman으로 데이터를 요청하고 받을 수 있음.
이러한 방식과 같이 네이버 API와 파이썬으로 데이터를 요청하고 받고자함.
※ 준비사항
① naver application ID : X-Naver-Client-Id
② naver application PW : X-Naver-Client-Secret
□ 활용 라이브러리
○ requests : 해당 데이터를 특정서버에 요청하여 가져오는 라이브러리
○ pprint : 가시성 개선을 위한 출력을 위해 불러옴(json 형식으로 깔끔하게 출력해줌)
import requests # 해당 데이터를 특정서버에 요청하여 가져오는 라이브러리
import pprint #가시성 개선을 위한 출력을 위해 불러옴(json 형식으로 깔끔하게 출력해줌)
□ 변수 지정
○ X-Naver-Client-Id : 네이버 API application 등록시 제공 받은 ID
○ X-Naver-Client-Secret : 네이버 API application 등록시 제공 받은 pw(secrete code)
※ 위 2개는 보안에 유의하여 자기자신만 알도록 주의해야함
○ 네이버 API 제공 주소(*json)
#변수값 지정 : 네이버 애플리케이션 등록시 발급받은 정보
personal_key = 'id' #X-Naver-Client-Id
personal_pw = 'pw' #X-Naver-Client-Secret
#get api 주소
target_api = 'https://openapi.naver.com/v1/search/news.json?query=검색값'
#헤더 변수값 : 딕셔너리형태
header_parames = {'X-Naver-Client-Id' : personal_key, 'X-Naver-Client-Secret' : personal_pw}
□ 네이버 API로 요청 데이터 보내기(위에 내용 이어서)
○ 아래 형태에 유의하여 지정할것
○ 변수명 = requests.get(api 주소가 담긴 변수, headers = X-Naver-Client id와 pw가 담긴 변수)
#정보 서버로 보내기 : .get 포스트맨에서 get과 동일한 기능
res_get = requests.get(target_api, headers = header_parames)
□ 데이터 변수 지정 / json 형태로 받는것이므로 .json() 으로 코딩
#데이터 변수지정 : json 형식으로 받으므로 .json() 으로 명시
get_data = res_get.json()
□ 전체 코드 및 출력값
import requests # 해당 데이터를 특정서버에 요청하여 가져오는 라이브러리
import pprint #가시성 개선을 위한 출력을 위해 불러옴(json 형식으로 깔끔하게 출력해줌)
#변수값 지정 : 네이버 애플리케이션 등록시 발급받은 정보
personal_key = 'ID' #X-Naver-Client-Id
personal_pw = 'PW' #X-Naver-Client-Secret
#검색 키워드
target_word = input('검색기사 키워드 입력\t:\t')
#get api 주소
target_api = 'https://openapi.naver.com/v1/search/news.json?query='+target_word
#헤더 변수값 : 딕셔너리형태
header_parames = {'X-Naver-Client-Id' : personal_key, 'X-Naver-Client-Secret' : personal_pw}
#정보 서버로 보내기 : .get 포스트맨에서 get과 동일한 기능
res_get = requests.get(target_api, headers = header_parames)
#데이터 변수지정 : json 형식으로 받으므로 .json() 으로 명시
get_data = res_get.json()
#페이지 상태에 따른 기능동작처리
if res_get.status_code == 200:
pprint.pprint(get_data) #pprint.pprint 를 활용하여 가시성 개선
print('↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑순수 로우데이터↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑\n\n\n\n\n')
print('↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓가공 데이터↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓')
pprint.pprint(get_data['items'][0]['title']) #키값이 items이며 0번째의 title을 출력
else:
print(f'☆★☆★☆★☆★☆★오류발생\t:\t{res_get.status_code}')
□ 전체 코드 및 출력값(반복문 + enumerate 함수활용)
* enumerate 함수 및 index를 활용하여 출력내용별 index번호 표시
* 네이버 API에 요청하여 가져온 json 데이터 중 item 키에 속한 title과 link 데이터를 출력
import requests # 해당 데이터를 특정서버에 요청하여 가져오는 라이브러리
import pprint #가시성 개선을 위한 출력을 위해 불러옴(json 형식으로 깔끔하게 출력해줌)
#변수값 지정 : 네이버 애플리케이션 등록시 발급받은 정보
personal_key = 'ID' #X-Naver-Client-Id
personal_pw = 'PW' #X-Naver-Client-Secret
#검색 키워드
target_word = input('검색기사 키워드 입력\t:\t')
#get api 주소
target_api = 'https://openapi.naver.com/v1/search/news.json?query='+target_word
#헤더 변수값 : 딕셔너리형태
header_parames = {'X-Naver-Client-Id' : personal_key, 'X-Naver-Client-Secret' : personal_pw}
#정보 서버로 보내기 : .get 포스트맨에서 get과 동일한 기능
res_get = requests.get(target_api, headers = header_parames)
#데이터 변수지정 : json 형식으로 받으므로 .json() 으로 명시
get_data = res_get.json()
#페이지 상태에 따른 기능동작처리
if res_get.status_code == 200:
#반복문을 활용하여 출력
for index, v in enumerate(get_data['items']): #데이터의 item 키를 범위로 반복문 실행 + enumerate 후 index로 출력값 앞에 번호를 맥임(range함수보다 개선된 함수)
print(index+1, v['title'], v['link']) #item 키의 'title'와 'link' 값 출력
else:
print(f'☆★☆★☆★☆★☆★오류발생\t:\t{res_get.status_code}')
'Python > Python_Crawling' 카테고리의 다른 글
공공데이터 포탈 API (0) | 2024.01.22 |
---|---|
네이버 API : 데이터 엑셀저장 (0) | 2024.01.21 |
API/JSON 이란?(+postman 활용 데이터 get) (0) | 2024.01.19 |
셀레니움 : 다음이미지 마우스호버 및 사진별 캡쳐 (0) | 2024.01.19 |
셀레니움 : 파일업로드 (0) | 2024.01.19 |