본문 바로가기
카카오봇

카카오봇 만들기 (4) : 실시간 검색 받아오기

by Half-Dev 2020. 3. 16.

안녕하세요.

이번에는 실시간 검색을 받아보도록 하겠습니다.

 

이번 강의 또한 자바스크립트와 HTML에 대해 알고 있으셔야 합니다.


1. 특정 데이터 받아오기

1
2
3
4
function response(room, msg, sender, isGroupChat, replier, ImageDB) {
    var data=org.jsoup.Jsoup.connect("https://m.search.naver.com/search.naver?query=실시간%20검색어").get().select("span.tit")+""
    replier.reply(data);
 }
cs

Jsoup.connect 를 통해서 해당 url에 있는 사이트를 가져올 수 있습니다.

get().select를 통해서 span태그의 tit클래스만 따로 분류하여 추출합니다.

그리고 채팅창에 아무거나 입력하시면 봇은 아래의 사진처럼 출력을 할 것입니다.


2. 받아온 데이터의 태그 없애기

1
2
3
4
5
6
7
function response(room, msg, sender, isGroupChat, replier, ImageDB) {
    var data=org.jsoup.Jsoup.connect("https://m.search.naver.com/search.naver?query=실시간%20검색어").get().select("span.tit")+""
    data = data.replace(/<[^>]+>/g,"");
    data = data.split("\n");
 
    replier.reply(data);
 }
cs

받아온 데이터에 불필요한 정보 <span class="tit _keyword"></span>을 replace의 정규식을 통해서 없애도록 합니다.

그런 후 Enter를 기준으로 나누어 배열에 저장합니다. 

채팅창에 아무거나 입력을 하면 봇은 아래의 사진처럼 응답합니다.


3. 데이터 정리

위의 사진처럼 배열에 저장된 값을 보기 쉽게 정리해보도록 하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
function response(room, msg, sender, isGroupChat, replier, ImageDB) {
    var data=org.jsoup.Jsoup.connect("https://m.search.naver.com/search.naver?query=실시간%20검색어").get().select("span.tit")+""
    var weather = "";
 
    data = data.replace(/<[^>]+>/g,"");
    data = data.split("\n");
 
    for(var idx = 0; idx < 10; idx ++) {
        weather += (idx + 1+ "위 : " + data[idx] + "\n";
    }
 
    replier.reply(weather);
 }
cs

 


4. 마무리 작업

10위 밑을 보면 Enter가 하나 더 있는 것을 볼 수 있고, 아무거나 입력하면 실시간 검색에 대한 내용이 뜨기 때문에 이를 정리해주도록 합시다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function response(room, msg, sender, isGroupChat, replier, ImageDB) {
    Real_Time_Query(msg, replier)
 }
 
 
function Real_Time_Query(msg, replier) {
    if(msg == "실검") {
        var data=org.jsoup.Jsoup.connect("https://m.search.naver.com/search.naver?query=실시간%20검색어").get().select("span.tit")+""
        var weather = "[네이버 실시간 검색어]\n\n";
    
        data = data.replace(/<[^>]+>/g,"");
        data = data.split("\n");
    
        for(var idx = 0; idx < 10; idx ++) {
            weather += (idx + 1+ "위 : " + data[idx] + "\n";
        }
        weather = weather.slice(0-1);
    
        replier.reply(weather);
    }
}
cs

 

 

댓글