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

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

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

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

블로그 키워드 분석 목차 바로가기
영상 강의
큰 화면으로 보기

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

  • [퀵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" 형태 (=매크로 포함 통합문서)로 저장해야 합니다. [파일] - [저장]을 선택 후, '매크로 포함 통합문서'로 파일을 저장합니다.

    엑셀 매크로 통합문서 저장
    작성한 파일을 매크로 포함 통합문서로 저장합니다.

5 5 투표
게시글평점
guest
5 댓글
Inline Feedbacks
모든 댓글 보기
여행친구
여행친구 (@kakao_6180ea7bcd91d)
2021년 11월 5일 9:58 오전
게시글평점 :
     

유용하네요. 감사합니다.

neokimy2k
neokimy2k (@neokimy2k)
2021년 11월 5일 10:08 오전
게시글평점 :
     

업무에 도움 되는 자료네요. 고맙습니다.

바르망
바르망 (@ublifehanmail-net)
2021년 11월 6일 9:50 오후
게시글평점 :
     

최고네요

바르망
바르망 (@ublifehanmail-net)
2021년 11월 6일 9:51 오후
게시글평점 :
     

유용합니다

BC TRAVEL gangsane
BC TRAVEL gangsane (@presoyngkakao-com)
2021년 11월 14일 10:26 오전
게시글평점 :
     

대단합니다

5
0
여러분의 생각을 댓글로 남겨주세요.x