업비트 공지사항 크롤링 강좌
예전에 업비트 공지사항 알림봇을 개발한 적이 있습니다.
/page.php?bbs=devlist&bbs_idx=25&pg=2
이런류의 개발프로그램은 업비트에서 특별한 API 를 제공해주지 않는이상, 크롤링으로 개발할 수밖에 없습니다.
위 프로그램은 아래와 같은 방법으로 개발되었습니다.
- 5초마다(폴링) 업비트 공지사항을 크롤링하여 데이터베이스에 기록한다.
- 새로운 공지사항이 올라오면 텔레그램으로 알림을 받게 한다.(텔레그램 API 이용)
그럼 업비트 공지사항은 어떻게 긁어오느냐?
https://upbit.com/service_center/notice
위 주소는 업비트 공지사항 URL 입니다.
단순하게 URL 만 크롤링 하면 되지 않겠어? 라고 생각하면 안됩니다.
요즘 웹은 예전의 웹과는 다르게 모든 각 요소마다 비동기식 Ajax 통신으로 데이터를 불러옵니다.
즉 간단하게 말해서
위와같은 공지사항 페이지가 있으면, 우측의 공지사항 부분만 불러오는 비동기식 Ajax 통신 URL 이 따로 존재할 것이란 겁니다.
그럼 그 URL 은 어떻게 알아오느냐???
피들러나 와이어 샤크같은 툴을 이용하면 됩니다만, 이것들도 이제는 필요가 없습니다.
요즘 브라우저들은 개발자도구가 아주 편리하게 만들어져 있습니다. 그중 개발자들이 가장 많이 사용하는 크롬 개발도구를 이용해 보겠습니다.
자 크롬으로 업비트 공지사항 페이지를 열고, F12 번을 눌러보세요.
자 위와같이 우측에 개발자 도구툴이 오픈됩니다.(우측또는 좌측 또는 새창으로 조절은 본인이 알아서 하시길...)
그리고 Network 탭에 보시면 저 페이지에서 호출된 또는 호출중인 URL 들이 노출되고 있습니다.
즉 빽단으로 호출하고 있는 Request 와 Response 비동기통신을 모두 확인할 수 있는 겁니다.
그럼 공지사항 URL은 어디있느냐???
공지사항이 호출되는 시점에서 URL 을 찾아보시면 됩니다.
그럼 호출되는 시점이 언제인가???
바로 위 페이지 좌측에 "공지사항" 을 클릭하는 순간이 되겠지요.
클릭을 하면 빽단 으로 공지사항을 호출할테니 URL 을 찾아보자는 겁니다.
찾았습니다. 아마 저 페이지일것이라 추측을 하였고, 실제로 맨 우측 화면의 Response 탭에서 데이터를 확인해보니 JSON 데이터 인것이 확인이 됩니다.
자 마우스 우클릭을 하여 구체적으로 들어가봅시다.
Open in new tab 을 눌러봅니다.
https://api-manager.upbit.com/api/v1/notices?page=1&per_page=20&thread_name=press
위와같이 JSON 데이터가 확인이 됩니다.
자 그럼 이제 정리를 해보면, 업비트 공지사항 크롤링 URL 은 위 URL 이 되는 것입니다.
자 이제 데이터 확인을 해봅시다.
JSON 데이터를 보기좋게 알아보기 위해 아래 JSON 파싱 웹페이지에서 확인을 해봅니다.
확인결과
자 위와같이 확인이 됩니다.
data -> list 안에 row 형식으로 공지사항이 확인이 됩니다.
이렇게 대부분의 크롤링은 빽단의 URL 을 찾아내서 데이터를 찾아내어 파싱을 하게 되는데, 뺵단의 데이터는 대부분 JSON 또는 XML 형식입니다.
간혹 HTML 을 통째로 리턴하는 경우도 있는데, 매우 비효율적인 방법이지요... 불필요한 데이터까지 비동기 통신을 하는건 서버자원소모가 크기 때문입니다.
자 여기까지입니다.
전 비동기 Ajax 통신의 URL 을 캐치하는 방법을 알려드린 것이며,
크롤링은 어떻게 해야하는지?
폴링은 어떻게 하는지?
DB에 저장은 어떻게 해야 하는지?
파싱은 어떻게 해야하는지?
JSON 은 뭔데요?
XML은 뭔데요?
등의 내용은 여기서 다루기는 너무 방대한 관계로 이번 설명은 여기까지만 하도록 하겠습니다.