카카오톡 봇 [KAKAO BOT]

카카오톡 봇 제작 - 8) 정적 웹에서 데이터 가져오기 (웹크롤링)

META_BS 2021. 7. 22. 22:02

이걸 원했어

 

정적 웹이란? -> 멈춰있는 웹

 

그럼 움직이는 웹도 있나요? -> 네

실시간으로 그래프가변하는, 코로나 라이브나 트레이딩뷰의 비트코인차트같은것을 동적웹이라고 부릅니다.

 

하지만 구글검색결과는 가만히 놔둬도 바뀌는 값이 없습니다

이런걸 정적 웹이라고 합니다.

 

 

그럼 구글에 비트코인이라고 검색해봅시다

 

 

우리가 원하는건 36,925,055.44 겠죠?

 

크롬에서 F12를 눌러봅시다

 

이런게 뜰텐데, 특정 div 쪽에 커서를 올려놓으면 구역이 뜹니다.

그게 저 클래스가 얼만큼의 정보를 가지고 있는지 나타내주는겁니다.

확장화살표를 계속 눌러서 안쪽의 데이터로 더 들어가봅니다

 

겟또다제

자 저 숫자를 찾았네요

저 숫자가 있는 클래스의 이름을 찾아줍니다.

<  span.DFlfde.SwHCTb  >입니다

 

if(dict_cmd[msg] == "/btckrw"){
            let google_coin_search = org.jsoup.Jsoup.connect("https://www.google.com/search?q=qlxmzhdls+rkrur&oq=qlxmzhdls+rkrur&aqs=chrome..69i57.1112j0j4&sourceid=chrome&ie=UTF-8").get();
            let google_coin_search_btc = google_coin_search.select("span.DFlfde.SwHCTb").get(0).text();
            output_text += "[GOOGLE SEARCH]\n";
            output_text += "BTC/KRW : " + google_coin_search_btc + " 원";
            replier.reply(output_text);
        }

 

Jsoup을 이용하면 됩니다

사실 저도 원리는 잘 모르고 그냥 url 따와서 select로 클래스 선택한다음(공백은 .으로 대체) get text 뒤에 붙여서 

문자열형식으로 가져오면 됩니다