python(11) open API 활용하기 (네이버 블로그)

hyukstory 혁스토리·2020년 8월 26일
0

python

목록 보기
17/35

#네이버 개발자 센터에서 어플리케이션 등록 후
#네이버 개발자 센터에서 제공하는 블로그 open API 활용하여 연습
#참고 : https://developers.naver.com/docs/search/blog/

#X-Naver-Client-Id = 클라이언트 아이디
#X-Naver-Client-Secret = 클라이언트 비밀번호

네이버 검색 Open API 예제 - 블로그 검색

import urllib.request
client_id = "클라이언트 아이디"
client_secret = "클라이언트 비밀번호"
encText = urllib.parse.quote(input("검색할 단어를 입력하세요 :"))
url = "https://openapi.naver.com/v1/search/blog?query=" + encText # json 결과
# url = "https://openapi.naver.com/v1/search/blog.xml?query=" + encText # xml 결과
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()
    print(response_body.decode('utf-8'))
else:
    print("Error Code:" + rescode)
    
    

네이버 블로그 검색 open API 실전 연습

# 요청 변수 : display_count = 출력건수 / start_point = 검색 시작 위치

import requests
from urllib.parse import urlparse
keyword = '붕어빵'
url = "https://openapi.naver.com/v1/search/blog?query=" + keyword + "&display=100" + "&start=101"
result = requests.get(urlparse(url).geturl(),
                     headers={"X-Naver-Client-Id":"클라이언트 아이디",
                              "X-Naver-Client-Secret":"클라이언트 비밀번호"})
print(result.json())

#print의 결과값만 복사해서 google에 json viewer쳐서 들어가서 text에 붙여넣고 view 누르기


# =============================================================================
# key를 이용해서 value를 뽑아내기(dict니까)
# =============================================================================
json_data = result.json()
#type(json_data)
#print(json_data['display'])
#print(json_data['lastBuildDate'])
#print(json_data['start'])
#print(json_data['total'])
#print(json_data['items']) #세부내용
#print(type(json_data['items']))


#for문으로 내용 뽑아서 파일 만들기

file = open("네이버블로그openAPI.txt", 'w', encoding = "UTF-8")
for item in json_data['items']:
    file.write(item['title'].replace("<b>", "").replace("</b>", "") + "\n")  # <b> </b> 제거
    file.write(item['description'].replace("<b>", "").replace("</b>", "") + "\n")
    file.write('========================================' + '\n')
    
file.close()

start point 와 display count 활용해서 data를 원하는 만큼 출력후 파일로 저장하는 함수 만들어보기

def naverBlogOpenAPI(x,y,z) :
    

    import requests
    from urllib.parse import urlparse
    
    
    file = open("네이버블로그openAPI_all.txt", 'w', encoding = "UTF-8")
    
    
    keyword = str(x)
    
    i = 1
    
    for i in range(1, y+1) : 
        if i == 1 :
            url = "https://openapi.naver.com/v1/search/blog?query=" + \
                keyword + "&display=" + str(z) + "&start=" + str(i)
        elif i > 1 :
            url = "https://openapi.naver.com/v1/search/blog?query=" + \
                keyword + "&display=" + str(z) + "&start=" + str((i-1)*z + 1)
        
                
        result = requests.get(urlparse(url).geturl(),
                             headers={"X-Naver-Client-Id":"클라이언트 아이디",
                                      "X-Naver-Client-Secret":"클라이언트 비밀번호"})
        
        json_data = result.json()
        
        
        #for문으로 내용 뽑아서 파일 만들기
        for item in json_data['items']:
            file.write("[제목] : " + item['title'].replace("<b>", "").replace("</b>", "") + "\n")       # <b> </b> 제거
            file.write("[본문] : " + item['description'].replace("<b>", "").replace("</b>", "") + "\n")
            file.write('========================================' + '\n')
        
        file.write("\n" + "<<<<<<<<<<<<<<<<<<<<" + str(i*z) + "개 완료" + ">>>>>>>>>>>>>>>>>>>>" + "\n\n")
        
    file.close()
    

실행해보기

naverBlogOpenAPI("붕어빵", 3, 11)
profile
문돌이의 고군분투 개발 공부

1개의 댓글

comment-user-thumbnail
2021년 6월 14일

안녕하세요. 궁금한게 있는데요. 블로그 검색 API를 사용해서 검색된 문서수 TOTAL 값을 구하는데... 최근 한달간의 문서수만 구할수는 없을까요? 어떻게 해야 할까요?

답글 달기