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

엑셀 구글 검색어 크롤링 매크로 / 자동화 서식 만들기

라이브 71 회 2021년10월23일 위캔두 Plus

강의 소개

1. 엑셀 VBA 매크로 기초

엑셀 매크로 편집창 구조_R

이번 강의에서는 엑셀 매크로 편집기의 구성 요소와 각 윈도우의 표시 방법 및 사용법에 대해 간략히 알아봅니다.

.
엑셀 매크로 변수 설정_R

이후 기본 명령문을 작성하고 변수를 선언하는 방법과 변수를 선언해서 명령문을 작성해야 하는 이유에 대해 알아봅니다.

2. 구글 검색어 크롤링 (10줄 매크로!)

구글 검색어 가공_R

이번 강의에서는 구글 검색어 크롤링에 필요한 GetHTTP 명령문 사용법과 결과로 반환된 데이터를 실제 필요한 문장으로 가공하는 방법을 알아봅니다.

.
엑셀 구글 크롤링 매크로_R

이후 Split 함수를 사용하여 검색 결과를 원하는 단위로 나눈 뒤, 가공하여 최종 결과물을 얻는 방법에 대해 단계별로 살펴봅니다.

3. 구글 검색어 / 블로그 크롤링 서식

엑셀 구글 검색어 크롤링 서식_R

이번 강의에서는 작성한 매크로를 활용하여 GetGoogleSearch 라는 사용자함수를 만들고 구글 검색어를 실시간으로 크롤링하는 자동화 서식을 제작합니다.

.
엑셀 네이버 블로그 크롤링_R

이후 작성한 명령문을 활용하여 네이버의 블로그 검색 결과를 크롤링하는 엑셀 자동화 서식도 추가로 제작합니다.

보충 자료

1️⃣ 이번 강의에서 사용할 VBA 코드 템플릿

Function GetGoogleSearch()

Dim s As String
Dim v As Variant
Dim i As Variant

End Function

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


버전 안내

이번 강의는 일부 버전에서 실습이 제한됩니다.

윈도우 : 엑셀 2013 이후 버전에서 사용 가능합니다.
Mac : Mac용 엑셀에서는 WinHTtp 라이브러리가 제공되지 않아 실습 진행이 불가능합니다.
댓글 2
5 (2개 평가)
새로운 세계로
새로운 세계로 2023.08.05 10:25
쉽게 학습할 수 있었습니다.
감사합니다.
강민준🤗
강민준🤗 2024.08.12 09:23
좋은 강의 정말 감사합니다🙇‍♂️