Flask

네이버의 뉴스 검색 Open API 이용하기

yugyeong 2023. 1. 13. 16:02

 

네이버의 뉴스 검색 open api 를 이용하는 방법이다.

https://developers.naver.com/docs/serviceapi/search/news/news.md#%EB%89%B4%EC%8A%A4

 

검색 > 뉴스 - Search API

검색 > 뉴스 뉴스 검색 개요 개요 검색 API와 뉴스 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 영화, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수 있는 API

developers.naver.com

 

 

1. 네이버 API 에 애플리케이션 등록

네이버 api 를 이용하기 위해서는 먼저 애플리케이션 등록을 해야한다.

 

애플리케이션 등록 (API) 이용 신청은 아래처럼 하였다.

파이썬 코드를 이용하여서 개발할 것이기 때문에 환경은 web 으로 설정하였고, 로컬에서 코드를 돌려서 테스트 할 것이기 때문에 웹서비스 url 은 localhost:5000 으로 설정하였다.

  • 사용 API : 검색
  • 환경 : WEB
  • 웹 서비스 URL : localhost:5000

 

 

필요한 항목들을 모두 설정하고 나면, 오픈 API 활용에 필요한 Client ID 와 Client Secret 키를 발급해준다.

Client ID 와 Client Secret 키는 노출되면 않도록 조심하여야 한다.

 

2. 코드 작성 전 네이버 API 사이트에서 필요한 데이터 확인

https://developers.naver.com/docs/serviceapi/search/news/news.md#%EB%89%B4%EC%8A%A4

 

검색 > 뉴스 - Search API

검색 > 뉴스 뉴스 검색 개요 개요 검색 API와 뉴스 검색 개요 검색 API는 네이버 검색 결과를 뉴스, 백과사전, 블로그, 쇼핑, 영화, 웹 문서, 전문정보, 지식iN, 책, 카페글 등 분야별로 볼 수 있는 API

developers.naver.com

위 사이트에서 코드 작성에 필요한 데이터를 확인할 것이다.

 

먼저 우리가 필요한 데이터는 요청 URL 과 HTTP 메서드이다.

requests 라이브러리를 이용하여 GET 으로 요청 URL 을 가져와야한다.

( Restful OPEN API 를 호출할 때 사용하는 라이브러리 : requests 라이브러리 )

 

 

필요한 데이터를 딕셔너리에 넣어서 요청해야 하기 때문에 파라미터도 잘 봐야한다.

 

헤더에 넣어야 하는 값은 Client-id 값과 Client-Secret 값이다.

 

헤더에 클라이언트 아이디와 시크릿값말고 다른 값이 들어가는 경우도 있다.

어떤 데이터가 들어가는지 헷갈릴때는 요청 예를 확인하면 된다.

- H 가 헤더라는 의미이다.

- H 가 붙은 데이터들을 헤더값에 딕셔너리 형태로 넣어줘야한다.

 

3. Postman 설정

  • 자동차라고 검색한 뉴스 기사 데이터를 30개만 가져올 것이다.
  • 포스트맨에서 Query Parms - KEY 값에 검색할 데이터와 가져올 데이터 수를 지정하였다.
    • keyword : '자동차'
    • limit : 30

 

 

4. 코드 작성

  • Restful open Api 를 호출할 때 사용하는 라이브러리 => requests 라이브러리
  • requests.get 으로 API 를 호출한다. 
    • 여기서 get 인 이유는 네이버에서 지정해준 HTTP 메서드가 GET 이였기 때문이다.
  • 변수 data 와 headers 에 필요한 데이터를 딕셔너리 형태로 넣어준다.
    • data : 네이버에서 지정해준 파라미터 값
    • headers : 네이버에서 헤더값으로는 시크릿 아이디와 시크릿 키만 넣으라고 했기 때문에 시크릿 아이디와 키 값만 넣으면 된다.
  • 요청한 api 결과 데이터를 response 변수에 저장하였다. 우리가 원하는 데이터로 가져오기 위해서 .json() 을 해주어야한다. 
    • response.json()
  • return 값으로는 가져오고자 하는 데이터를 억세스 하면 된다. ( 뉴스 기사의 title 만 가져오도록 하였다. )
 

JSON Editor Online: JSON editor, JSON formatter, query JSON

You need to enable JavaScript to run this app. JSON Editor Online JSON Editor Online is a web-based tool to view, edit, format, repair, compare, query, transform, validate, and share your JSON data. About JSON Editor Online JSON Editor Online is a versatil

jsoneditoronline.org

 

 

class NaverSearchResource(Resource) :
    def get(self) :
        keyword = request.args.get('keyword')
        limit = request.args.get('limit')

        ## 네이버 API 호출

        #### Restful OPEN API 를 호출할 때 사용하는 
        #### 라이브러리 => requests 라이브러리

        data = {'query' : keyword , 'display' : limit}
        headers = {'X-Naver-Client-Id' : Config.NAVER_CLIENT_ID, "X-Naver-Client-Secret" : Config.NAVER_CLIENT_SECRET}
        
        # 요청 URL, 보낼데이터, 헤더정보
        response = requests.get('https://openapi.naver.com/v1/search/news.json', data, headers = headers)
        # json 형태로 데이터를 변경해줌
        response = response.json()

        title_list = []
        for row in response['items'] :
            title_list.append(row['title'])
        

        return {'result' : 'success', 'items' : title_list}, 200

 

5. postman 으로 결과값 확인