55회
엑셀 x 네이버 블로그 발행량 조회 자동화 양식 & 함수 만들기
강의노트
댓글(13)
'오빠두엑셀'의 모든 Live 강의를
월 990원에 자유롭게 수강하세요!
'위캔두 멤버쉽' 가입하기
강의 자료

📣 안내 말씀 드립니다.

2024년 8월 20일 이후,
네이버 블로그 게시글의 주/월별 발행량 URL의 서비스가 중단되었습니다. 😢

이에 따라 이번 강의에서 안내해 드린 내용은 더 이상 실습이 어렵게 되었으나,
강의에서 다룬 이론적인 내용은 여전히 유용하니 참고해주세요! 😉

다른 URL을 참고하여 블로그 발행량을 조회하는 방법은
곧 별도의 멤버십 특강으로 제공할 예정입니다.
감사합니다.🙇‍♂️


보충 자료

1️⃣ 이번 강의에서 사용된 네이버 게시글 게시글 세기 - VBA 마스터 코드

Function NaverPostCount(Keyword, Optional Period = "1m")
 
Dim URL As String
Dim HTMLDoc As HTMLDocument
Dim strResult As String
 
'Dim Keyword As String: Dim Period As String
'Keyword = "파워포인트"
'Period = "1y"
'1h:1시간, 1w:1주, 1m:1달, 1y:1년, from20200101to20201231:기간지정..
 
'중요 알림
'블로그 발행량을 반환하는 URL이 일부 변경되었습니다.
'전체 코드 중, URL 부분은 아래 코드로 수정하여 실습을 진행해주세요! 
'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
 
End Function
 
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
관련 강의
버전 안내
이번 강의는 일부 버전에서 실습이 제한됩니다.
윈도우 : 파워쿼리의 FuzzyMatch 기능은 엑셀 2021 이후 버전에서 사용 가능하며, 파워쿼리는 엑셀 2016 이후 버전부터 사용가능합니다.
Mac : Mac용 엑셀에서는 실습 진행이 불가능합니다.
시간대별 목차
주요편집영상
  1. VBA 프로젝트 강의 #1-2 - 2강

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

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

13 댓글
Inline Feedbacks
모든 댓글 보기
강의노트
'오빠두엑셀'의 모든 Live 강의를
월 990원에 자유롭게 수강하세요!
'위캔두 멤버쉽' 가입하기
강의 자료

📣 안내 말씀 드립니다.

2024년 8월 20일 이후,
네이버 블로그 게시글의 주/월별 발행량 URL의 서비스가 중단되었습니다. 😢

이에 따라 이번 강의에서 안내해 드린 내용은 더 이상 실습이 어렵게 되었으나,
강의에서 다룬 이론적인 내용은 여전히 유용하니 참고해주세요! 😉

다른 URL을 참고하여 블로그 발행량을 조회하는 방법은
곧 별도의 멤버십 특강으로 제공할 예정입니다.
감사합니다.🙇‍♂️


💡 보충 자료 보기 (클릭!)
주요편집영상
  1. VBA 프로젝트 강의 #1-2 - 2강

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

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

시간대별 목차
13
0
여러분의 생각을 댓글로 남겨주세요.x