axios를 이용해서 '강원도 루어낚시 포인트'를 포함한 블로그 게시글 크롤링해보았다.
낚시 가고싶은데 이젠 날이 너무 추워졌다...
작업에 앞서 네이버 API 사용을 위해 어플리케이션 등록을 해줘야한다.
아래 링크를 눌러 네이버 로그인을 해주면 어플리케이션 등록화면으로 넘어간다.
https://developers.naver.com/apps/#/register

사용API는 blog 검색 크롤링을 할꺼라서 검색으로 설정해주었다.

등록을 완료하면 이런 화면이 나오는데 Client ID와 Client Secret은 axios 요청시 헤더담아 보내줘야한다.
왜냐구? 여기서 그렇게 하라구함.
(사실 HTTP 인증을 통해 API를 사용하기 위함이다.)
네이버 개발자 문서

간단하게 API 등록까지 마친 다음
아래 코드를 입력해준다.
const axios = require("axios");
query = "강원도 루어 포인트";
const client_id = "Client ID 여기 적어주기";
const client_secret = "Client Secret 여기 적어주기";
axios({
method: "get",
url: "https://openapi.naver.com/v1/search/blog.json",
params: {
query: query, // 검색어 추가
display: 20,
},
headers: {
"X-Naver-Client-Id": client_id,
"X-Naver-Client-Secret": client_secret,
"Content-Type": "application/json",
},
})
.then(function (response) {
data = response.data;
console.log(data.items);
})
.catch(function (error) {
// handle error
console.log("에러발생", error);
});
다음과 같이 응답을 해주는데
파라미터 안에 query변수를 넣어주었다 (query = "강원도 루어 포인트")
display 파라미터는는 몇개 보고싶어?이다. 현재 20개까지 가져왔고 기본값은 10개씩 가져오게된다.
정상적으로 값을 가져온걸 확인 할 수 있다.

이제 이걸 이용해서 텔레그램 봇을 이용해서 텔레그램 채널방에 보내는 작업을 해보려고한다.