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

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

오빠두엑셀 by 오빠두엑셀
  • 학습시간 20분
  • 난이도 고급
  • 작성일 2021.11.04

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

이 강의에서는 네이버 검색 결과의 네트워크 분석으로 블로그 발행량 조회 URL을 추출하고, 엑셀에서 바로 호출할 수 있도록 NaverPostCount 사용자 지정 함수를 직접 제작하는 방법을 다룹니다. URL 쿼리문 분석부터 GetHTTP·Splitter 보조 함수 작성, 결과 가공까지 단계별로 정리해, 네트워크 분석을 활용한 VBA 자동화의 전체 흐름을 익힐 수 있습니다.

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

⭐ 중요 알림 ⭐

2024년 8월 20일 이후,
네이버에서 블로그 게시글의 주/월별 발행량 조회 URL 서비스를 중단하였습니다. 😢

이에 따라 본 강의에서 안내해 드린 방식 그대로의 실습은 더 이상 진행하기 어렵지만,
강의에서 다루는 네트워크 분석 원리와 VBA 함수 제작 흐름은 여전히 유용하니 학습용으로 참고해 주세요. 😉

대체 URL을 활용해 블로그 발행량을 조회하는 방법은
별도의 멤버십 특강으로 곧 제공해 드릴 예정입니다.
감사합니다. 🙇‍♂️


.

라이브 강의 전체영상도 함께 확인해보세요!

위캔두 회원이 되시면 매주 오빠두엑셀에서 진행되는 라이브 강의 풀영상을 모두 확인하실 수 있습니다.


= NaverPostCount ( 키워드, [기간] )
'완성 코드와 사용 방법은 아래 목차에 단계별로 정리해 두었습니다.
'본 함수는 Windows 환경에서만 사용 가능합니다. (Mac 사용 불가)
인수 설명
키워드 블로그에 발행된 문서 수를 조회할 키워드를 입력합니다.
기간
[선택인수]
발행된 문서 수를 조회할 기간을 지정합니다. 기본값은 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 함수 사용법

  1. 매크로 편집기 실행하기 : 엑셀 상단 [개발도구] - [Visual Basic] 버튼을 클릭하거나 단축키 ALT + F11 키를 눌러 매크로 편집기를 실행합니다.

    엑셀 개발도구 추가

    오빠두Tip : 개발도구 탭이 보이지 않는 경우, 리본 메뉴를 우클릭한 뒤 '리본 메뉴 사용자 지정'으로 이동하여 개발도구를 활성화합니다.
  2. 매크로 편집기가 실행되면 상단 [삽입] 탭 - [모듈]을 클릭하여 새로운 모듈을 추가합니다.

    엑셀 매크로 모듈 추가

  3. VBA 함수 추가하기 : 추가된 모듈을 더블클릭하여 코드 창으로 이동한 뒤, 위에 안내해 드린 NaverPostCount 완성 코드를 복사하여 붙여넣기합니다.

    엑셀 네이버 블로그 조회 명령문 붙여넣기

  4. 붙여넣기한 코드 아래로 보조 함수도 이어서 복사·붙여넣기합니다.

    엑셀 매크로 보조 함수 붙여넣기

  5. 함수 동작 확인하기 : 엑셀 시트로 돌아온 뒤, 임의의 셀에 [ =NaverPostCount("엑셀") ]을 입력하면 해당 키워드의 1개월 간 블로그 문서 발행량이 조회됩니다.

    엑셀 네이버 블로그 발행량 조회

  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)
감사합니다.