블로그 키워드 발행량 분석, 엑셀로 자동화하는 방법
블로그 키워드 분석 목차 바로가기
⭐ 중요 알림 ⭐
2024년 8월 20일 이후,
네이버 블로그 게시글의 주/월별 발행량 URL의 서비스가 중단되었습니다. 😢
이에 따라 이번 강의에서 안내해 드린 내용은 더 이상 실습이 어렵게 되었으나,
강의에서 다룬 이론적인 내용은 여전히 유용하니 참고해주세요! 😉
다른 URL을 참고하여 블로그 발행량을 조회하는 방법은
곧 별도의 멤버십 특강으로 제공할 예정입니다.
감사합니다.🙇♂️
영상 강의
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [VBA프로젝트] 네이버 블로그 발행량 분석 함수 만들기완성파일[관련자료] 블로그 키워드 발행량 분석 서식무료서식
라이브 강의 전체영상도 함께 확인해보세요!
위캔두 회원이 되시면 매주 오빠두엑셀에서 진행하는 라이브강의 풀영상을 확인하실 수 있습니다.
NaverPostCount 함수 요약
NaverPostCount 함수 구문
= NaverPostCount ( 키워드, [기간] )
'완성 코드 및 사용법은 아래 목차에 정리해드렸습니다.
'본 함수는 Windows 환경에서만 사용 가능합니다. (Mac 사용 불가)NaverPostCount 인수 설명
인수 설명 키워드 블로그로 발행 된 문서 수를 조회할 키워드입니다. 기간
[선택인수]발행된 문서 수를 조회할 기간입니다. 기본값은 1개월(=1m) 입니다. - 1m : [기본값] 1개월
- 1h : 1시간
- 1w : 1주
- 3m : 3개월
- 6m : 6개월
- 1y : 1년
오빠두Tip : from시작일to종료일을 입력하면 특정 기간의 발행량을 조회할 수 있습니다. 특정 기간의 발행량을 조회하는 방법은 라이브 전체영상을 확인해주세요.Dim URL As String Dim Keyword As String: Dim Period As String Dim HTMLDoc As HTMLDocument Dim strResult As String Keyword = "엑셀" Period = "1m" '1h:1시간, 1w:1주, 1m:1달, 1y:1년, from20200101to20201231:기간지정.. URL = "https://s.search.naver.com/p/blog/search.naver?where=blog&api_type=1&query=" & Keyword & "&dup_remove=1&nso=so:r,p:" & Period & ",a:all&nx_search_query=" & Keyword
각 보조 함수의 자세한 사용법은 아래 관련 링크를 참고해주세요.
Private Function GetHttp(URL As String, Optional formText As String, _ Optional isWinHttp As Boolean = False, _ Optional RequestHeader As Variant, _ Optional includeMeta As Boolean = False, _ Optional RequestType As String = "GET") As Object '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ GetHttp 함수 '▶ 웹에서 데이터를 받아옵니다. '▶ 인수 설명 '_____________URL : 데이터를 스크랩할 웹 페이지 주소입니다. '_____________formText : Encoding 된 FormText 형식으로 보내야 할 경우, Send String에 쿼리문을 추가합니다. '_____________isWinHttp : WinHTTP 로 요청할지 여부입니다. Redirect가 필요할 경우 True로 입력하여 WinHttp 요청을 전송합니다. '_____________RequestHeader : RequestHeader를 배열로 입력합니다. 반드시 짝수(한 쌍씩 이루어진) 개수로 입력되어야 합니다. '_____________includeMeta : TRUE 일 경우 HTML 문서위로 ResponseText를 강제 입력합니다. Meta값이 포함되어 HTML이 작성되며 innerText를 사용할 수 없습니다. 기본값은 False 입니다. '_____________RequestType : 요청방식입니다. 기본값은 "GET"입니다. '▶ 사용 예제 'Dim HtmlResult As Object 'Set htmlResult = GetHttp("https://www.naver.com") 'msgbox htmlResult.body.innerHTML '############################################################### Dim oHTMLDoc As Object: Dim objHTTP As Object Dim HTMLDoc As Object Dim i As Long: Dim blnAgent As Boolean: blnAgent = False Dim sUserAgent As String: sUserAgent = "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Mobile Safari/537.36" Application.DisplayAlerts = False If Left(URL, 4) <> "http" Then URL = "http://" & URL Set oHTMLDoc = CreateObject("HtmlFile") Set HTMLDoc = CreateObject("HtmlFile") If isWinHttp = False Then Set objHTTP = CreateObject("MSXML2.ServerXMLHTTP") Else Set objHTTP = CreateObject("WinHttp.WinHttpRequest.5.1") End If objHTTP.setTimeouts 3000, 3000, 3000, 3000 objHTTP.Open RequestType, URL, False If Not IsMissing(RequestHeader) Then Dim vRequestHeader As Variant For Each vRequestHeader In RequestHeader Dim uHeader As Long: Dim Lheader As Long: Dim steps As Long uHeader = UBound(vRequestHeader): Lheader = LBound(vRequestHeader) If (uHeader - Lheader) Mod 2 = 0 Then GetHttp = CVErr(xlValue): Exit Function For i = Lheader To uHeader Step 2 If vRequestHeader(i) = "User-Agent" Then blnAgent = True objHTTP.setRequestHeader vRequestHeader(i), vRequestHeader(i + 1) Next Next End If If blnAgent = False Then objHTTP.setRequestHeader "User-Agent", sUserAgent objHTTP.send formText If includeMeta = False Then With oHTMLDoc .Open .Write objHTTP.responseText .Close End With Else oHTMLDoc.body.innerHTML = objHTTP.responseText End If Set GetHttp = oHTMLDoc Set oHTMLDoc = Nothing Set objHTTP = Nothing Application.DisplayAlerts = True End Function Private Function Splitter(v As Variant, Cutter As String, Optional Trimmer As String) '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '▶ Splitter 함수 '▶ Cutter ~ Timmer 사이의 문자를 추출합니다. (Timmer가 빈칸일 경우 Cutter 이후 문자열을 추출합니다.) '▶ 인수 설명 '_____________v : 문자열입니다. '_________Cutter : 문자열 절삭을 시작할 텍스트입니다. '_________Trimmer : 문자열 절삭을 종료할 텍스트입니다. (선택인수) '▶ 사용 예제 'Dim s As String 's = "{sa;b132@drama#weekend;aabbcc" 's = Splitter(s, "@", "#") 'msgbox s '--> "drama"를 반환합니다. '############################################################### Dim vaArr As Variant On Error GoTo EH: vaArr = Split(v, Cutter)(1) If Not IsMissing(Trimmer) Then vaArr = Split(vaArr, Trimmer)(0) Splitter = vaArr Exit Function EH: Splitter = "" End Function
NaverPostCount 함수의 완성 코드입니다. 위에 적어드린 GetHTTP, Splitter 보조 함수와 함께 아래 완성된 코드를 VBA 모듈에 붙여넣기하면 바로 사용할 수 있습니다.
오빠두Tip : VBA 입문자이실 경우 아래 정리해드린 함수 사용법을 참고하여 명령문을 직접 추가해보세요.Function NaverPostCount(Keyword, Optional Period = "1m") Dim URL As String Dim HTMLDoc As Object Dim strResult As String '1h:1시간, 1w:1주, 1m:1달, 1y:1년, from20200101to20201231:기간지정.. URL = "https://s.search.naver.com/p/blog/search.naver?where=blog&api_type=1&query=" & Keyword & "&dup_remove=1&nso=so:r,p:" & Period & ",a:all&nx_search_query=" & Keyword Set HTMLDoc = GetHttp(URL) strResult = HTMLDoc.body.innerHTML strResult = Splitter(strResult, """total"":""", """,""") NaverPostCount = CLng(strResult) End Function
VBA 입문자를 위한 NaverPostCount 함수 사용법
- 매크로 편집기 실행하기 : 엑셀 상단 [개발도구] - [Visual Basic] 버튼을 클릭하거나 단축키 ALT + F11 키를 눌러 매크로 편집기를 실행합니다.
개발도구 - Visual Basic 버튼을 클릭하여 매크로 편집기를 실행합니다. (Alt + F11) 오빠두Tip : 만약 개발도구탭이 보이지 않을 경우, 리본메뉴를 우클릭 - '리본메뉴 사용자 지정'으로 이동하여 개발도구를 활성화합니다. - 매크로 편집기가 실행되면 위쪽 [삽입] 탭 - [모듈]을 클릭하여 새로운 모듈을 추가합니다.
매크로 편집기에서 삽입 - 모듈을 클릭하여 새로운 모듈을 추가합니다. - VBA 함수 추가하기 : 추가된 모듈을 더블클릭하여 이동 후, 위에 적어드린 NaverPostCount 완성코드를 복사하여 붙여넣기합니다
NaverPostCount 함수를 모듈에 추가합니다. - 붙여넣기 한 코드 아래로 보조 함수도 복사/붙여넣기합니다.
보조 함수도 복사하여 모듈에 추가합니다. - 함수 동작 확인하기 : 엑셀 시트로 돌아온 후, 임의 셀에 [ =NaverPostCount("엑셀") ] 을 입력하면 입력한 단어의 1개월 간 블로그 문서 발행량이 조회됩니다.
시트로 돌아와 NaverPostCount 함수를 입력하면 블로그 발행량이 조회됩니다. - 파일 저장하기 : 매크로가 포함된 파일은 "*.xlsm" 형태 (=매크로 포함 통합문서)로 저장해야 합니다. [파일] - [저장]을 선택 후, '매크로 포함 통합문서'로 파일을 저장합니다.
작성한 파일을 매크로 포함 통합문서로 저장합니다.
로그인
지금 가입하고 댓글에 참여해보세요!
19 댓글