오빠두엑셀 `2026 무료 챌린지` 오픈! 완주하고 수료증 받아가세요! 5년 연속 IT분야 베스트셀러! 「 진짜쓰는 실무엑셀 」로 2026년 공부 끝내기 엑셀이 막히셨나요? Q&A 게시판에서 바로 해결하세요.
메뉴

블로그 키워드 발행량 분석, 엑셀로 자동화하는 방법

네트워크 분석으로 특정 키워드의 블로그 발행량을 조회하는 방법 및 실시간 분석을 위한 VBA 함수 제작까지 단계별로 알아봅니다.

# VBA

작성자 :
오빠두엑셀
최종 수정일 : 2024. 08. 21. 05:15
URL 복사
메모 남기기 : (19)

블로그 키워드 발행량 분석, 엑셀로 자동화하는 방법

블로그 키워드 분석 목차 바로가기

⭐ 중요 알림 ⭐

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종료일을 입력하면 특정 기간의 발행량을 조회할 수 있습니다. 특정 기간의 발행량을 조회하는 방법은 라이브 전체영상을 확인해주세요.

네이버 블로그 발행량 조회 코드 예제 (08:49)

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

이번 강의에 사용된 보조 함수 (GetHTTP, Splitter)

보조 함수의 자세한 사용법은 아래 관련 링크를 참고해주세요.

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 함수 완성 코드

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 함수 사용법

  1. 매크로 편집기 실행하기 : 엑셀 상단 [개발도구] - [Visual Basic] 버튼을 클릭하거나 단축키 ALT + F11 키를 눌러 매크로 편집기를 실행합니다.
    엑셀 개발도구 추가
    개발도구 - Visual Basic 버튼을 클릭하여 매크로 편집기를 실행합니다. (Alt + F11)
    오빠두Tip : 만약 개발도구탭이 보이지 않을 경우, 리본메뉴를 우클릭 - '리본메뉴 사용자 지정'으로 이동하여 개발도구를 활성화합니다.
  2. 매크로 편집기가 실행되면 위쪽 [삽입] 탭 - [모듈]을 클릭하여 새로운 모듈을 추가합니다.

    엑셀 매크로 모듈 추가
    매크로 편집기에서 삽입 - 모듈을 클릭하여 새로운 모듈을 추가합니다.
  3. VBA 함수 추가하기 : 추가된 모듈을 더블클릭하여 이동 후, 위에 적어드린 NaverPostCount 완성코드를 복사하여 붙여넣기합니다

    엑셀 네이버 블로그 조회 명령문 붙여넣기
    NaverPostCount 함수를 모듈에 추가합니다.
  4. 붙여넣기 한 코드 아래로 보조 함수도 복사/붙여넣기합니다.

    엑셀 매크로 보조 함수 붙여넣기
    보조 함수도 복사하여 모듈에 추가합니다.
  5. 함수 동작 확인하기 : 엑셀 시트로 돌아온 후, 임의 셀에 [ =NaverPostCount("엑셀") ] 을 입력하면 입력한 단어의 1개월 간 블로그 문서 발행량이 조회됩니다.

    엑셀 네이버 블로그 발행량 조회
    시트로 돌아와 NaverPostCount 함수를 입력하면 블로그 발행량이 조회됩니다.
  6. 파일 저장하기 : 매크로가 포함된 파일은 "*.xlsm" 형태 (=매크로 포함 통합문서)로 저장해야 합니다. [파일] - [저장]을 선택 후, '매크로 포함 통합문서'로 파일을 저장합니다.

    엑셀 매크로 통합문서 저장
    작성한 파일을 매크로 포함 통합문서로 저장합니다.
댓글 19
5 (14개 평가)
여행친구
여행친구 2021.11.05 09:58
유용하네요. 감사합니다.
neokimy2k
neokimy2k 2021.11.05 10:08
업무에 도움 되는 자료네요. 고맙습니다.
바르망
바르망 2021.11.06 21:50
최고네요
바르망
바르망 2021.11.06 21:51
유용합니다
BC TRAVEL gangsane
BC TRAVEL gangsane 2021.11.14 10:26
대단합니다
squt****
squt**** 2022.06.30 02:45
감사합니다.
선크
선크 2022.11.07 14:24
감사드립니다 매우 유용합니다 엑셀 2016버전도 가능한지요?
오빠두엑셀
오빠두엑셀 작성자 2022.11.07 19:21
안녕하세요.
네 윈도우를 사용중이시라면 엑셀 2013 이후 모든 버전에서 사용가능합니다.
min
min 2023.12.28 10:27
엑셀시행시 마이크로소프트가 위험요소 차단뜨면
해당파일 우클릭 > 속성 > 차단해제 체크하시면 됩니다
생강크림
생강크림 2024.04.19 16:54
완성파일로 키워드 검색을 다시 하니 #value 가 나옵니다.. 개수 결과값을 가져오는 네이버 쪽 URL이 변경되서 그럴까요?
오빠두엑셀
오빠두엑셀 작성자 2024.04.22 20:01
안녕하세요. 오빠두엑셀입니다.
엑셀 2016 및 M365 버전에서 모두 테스트 해 본 결과 이상없이 잘 동작하는 것으로 확인했습니다.
다시 한번 더 실행해보시겠어요? :)
감사합니다.
생강크림
생강크림 2024.04.22 22:03
장소만 바뀌었는데... 이번엔 아무문제없이 됩니다 신기하네요 ㅠㅠ 번거롭게 해드려서 죄송합니다.
봉쥬루
봉쥬루 2024.06.21 13:30
안녕하세요 해당 내용을 통해 블로그 집계는 잘 이루어졌습니다.
다만 카페도 이와 같이 총 발행량을 카운트하고 싶은데 HTTP 통신을 위한 URL 주소 체계를 모르겠는데 혹시 조언해주실 수 있을지요?

s.search.naver.com/p/cafe/47/search.naver?ac=1&aq=0&cafe_where=&date_from=&date_option=0&date_to=&display=30&m=0&nlu_query=%7B"r_category"%3A"18+32"%7D&nx_and_query=&nx_search_query=&nx_sub_query=&prdtype=0&prmore=1&qdt=1&query=화장실&qvt=1&spq=0&ssc=tab.cafe.all&st=rel&start=61&stnm=rel&_callback=getCafeContents&_=1718944057578

(참고로 위는 네이버 카페 검색에서 "요소검사->네트워크"를 통해 얻은 주소입니다.)
오빠두엑셀
오빠두엑셀 작성자 2024.06.22 16:50
안녕하세요. 오빠두엑셀입니다.
URL 쿼리의 각 항목은 직접 확인 후 분석해보셔야 합니다.
query 항목와 display 개수 등을 우선 확인해보시고, 나머지는 아래 링크를 참고하여 쿼리를 분석하는 방법을 확인해보시길 바랍니다. :)
엑셀 웹 크롤링, 이것만 알면 다 됩니다! | 네이버 부동산 - 오빠두엑셀 (oppadu.com)
감사합니다.