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

누구나 쉽게, 크롬과 엑셀만 있으면 가능한 웹크롤링 자동화 방법 (Listly 활용)

오빠두엑셀 by 오빠두엑셀
  • 학습시간 14분
  • 난이도 초급
  • 작성일 2021.05.07

크롬에서 무료로 제공되는 크롤링 추가기능인 리스틀리와 엑셀 파워쿼리를 활용한 웹 크롤링 자동화 기법

크롬 무료 확장프로그램 리스틀리(Listly)와 엑셀 파워쿼리를 결합하면 코딩 없이도 웹페이지 데이터를 정기적으로 자동 수집·취합할 수 있습니다. 본 강의에서는 네이버 쇼핑 페이지를 예시로, 데이터 추출부터 파일 병합·가공·이미지 자동 삽입까지의 전 과정을 단계별로 다룹니다.

누구나 쉽게, 크롬과 엑셀만 있으면 가능한 웹크롤링 자동화 방법 (Listly 활용)
DOWNLOADS

실습자료를 준비했어요

수업에서 사용한 예제 파일과 보충 자료를 한 곳에 정리했습니다!👇

보충 영상 : 쿠팡 상품페이지, 네이버 지도, 유튜브 인기페이지, 리스틀리 API 사용법

쿠팡 상품페이지 크롤링 방법

유튜브 인기 페이지 크롤링 방법

네이버 지도 주변상권 크롤링 방법

리스틀리 API 사용방법

xIMAGE 함수 추가기능 업데이트

엑셀 매크로 사용이 어려운 분들을 위해 xIMAGE 함수를 손쉽게 사용할 수 있는 추가기능을 제작하여 업로드했습니다. 아래 페이지에서 추가기능을 다운로드 받아 설치하시면, 매크로 작성 없이 바로 xIMAGE 함수를 사용할 수 있습니다.

엑셀 xIMAGE 함수 추가기능 썸네일

리스틀리(Listly)는 현재 보고 있는 웹페이지의 데이터를 엑셀 파일로 손쉽게 추출할 수 있는 무료 크롬 확장프로그램입니다. 크롬, 웨일, 엣지 등 크로미움 기반 브라우저에서 모두 사용 가능합니다.

  1. 리스틀리 설치하기 : 크롬 또는 웨일 브라우저에서 아래 링크로 이동한 뒤 [크롬 확장프로그램 추가] 버튼을 클릭하면 리스틀리 설치페이지로 이동합니다.

    리스틀리 설치

  2. 설치페이지로 이동한 뒤, [Chrome에 추가] 버튼(웨일·엣지의 경우 [추가] 버튼)을 클릭합니다.

    리스틀리 크롬에 추가

    오빠두Tip : 리스틀리는 크롬 기반 브라우저(크롬, 엣지, 웨일)에서만 지원되며, 사파리나 파이어폭스에서는 사용할 수 없습니다.
  3. 경고창이 나타나면 [확장 프로그램 추가] 버튼을 클릭하여 설치를 완료합니다.

    크롬 웹 크롤링 확장 프로그램 추가

  4. 리스틀리를 항상 고정하기 : 크롬 화면 오른쪽 상단의 퍼즐 모양 아이콘을 클릭한 뒤, 리스틀리 항목 오른쪽의 핀 모양 아이콘을 클릭해서 리스틀리 아이콘이 항상 표시되도록 고정합니다.

    리스틀리 확장프로그램 등록

  5. 리스틀리 설치가 완료되었습니다. 이제 데이터를 추출할 페이지로 이동한 뒤 [LISTLY WHOLE] 버튼을 클릭하면 현재 페이지의 모든 항목이 자동으로 크롤링됩니다.

    크롬 웹 크롤링 다운로드

이번 강의에서는 리스틀리를 활용해 네이버 쇼핑의 상품 페이지를 크롤링하는 방법을 단계별로 살펴보겠습니다.

  1. 네이버 쇼핑페이지 URL 분석 : 먼저 네이버 쇼핑 페이지로 이동합니다. (https://shopping.naver.com/)
  2. 쇼핑 페이지에서 크롤링하려는 카테고리로 이동합니다. 이번 강의에서는 [패션의류] - [여성의류] - [원피스] 카테고리를 예시로 사용하겠습니다.

    엑셀 네이버 쇼핑 크롤링 원피스

  3. 검색결과 페이지 오른쪽 상단에서 한 페이지에 표시할 항목 개수를 80개로 변경합니다.

    네이버 쇼핑 결과 개수

  4. 표시 개수를 80개로 변경하면 URL 주소가 변경되며, 주소 중간에 pagingSize=80 이라는 쿼리 파라미터가 추가됩니다. 이 쿼리의 숫자를 100으로 직접 수정하여 한 번에 더 많은 데이터를 불러올 수 있습니다.

    네이버 크롤링 쿼리 분석

    오빠두Tip : 네이버 쇼핑의 검색결과 표시개수는 최대 100개까지만 지원되며, 그 이상의 값을 입력해도 100개까지만 출력됩니다.
  5. 네이버 쇼핑페이지 크롤링 : 페이지를 끝까지 스크롤하여 모든 상품 데이터를 로딩한 뒤, 리스틀리 아이콘을 클릭한 후 [LISTLY WHOLE] 버튼을 클릭합니다.

    크롬 웹 크롤링 다운로드

    오빠두Tip : 리스틀리는 회원가입 없이 사용하면 횟수 제한 없이 무제한으로 사용할 수 있습니다. 다만 비회원 상태에서는 일부 고급 기능이 제한될 수 있습니다.
  6. 리스틀리-엑셀 다운로드 : 네이버 쇼핑 페이지의 모든 항목이 크롤링되었습니다. 기본 항목 100개에 광고 항목 6개가 더해져 총 106개의 데이터가 수집되었습니다. 결과 페이지에서 [엑셀] 버튼을 클릭합니다.

    엑셀 크롤링 결과 다운로드

  7. 크롤링 결과가 엑셀 파일로 다운로드됩니다. 이제 다운받은 데이터를 필요에 따라 자유롭게 가공하여 활용할 수 있습니다.

    크롤링 엑셀 파일 다운로드 완료

크롤링은 일반적으로 매일 또는 매주 주기적으로 반복되는 작업이므로, 이번 강의에서는 매일 다운받은 데이터를 파워쿼리로 자동 취합하는 방법을 함께 살펴보겠습니다.

  1. 폴더 안에 파일 모으기 : 예제파일을 다운로드한 뒤, 압축파일 안에 포함된 네이버_원피스 크롤링 파일을 바탕화면에 새로 만든 폴더로 이동합니다.

    엑셀 파일 폴더 이동

  2. 새로 다운로드한 네이버 원피스 크롤링 엑셀 파일을 동일한 폴더로 이동한 뒤, 파일 이름을 "네이버_원피스_YYYY-MM-DD" 형식으로 변경합니다.

    크롤링 엑셀 파일 이름 변경

  3. 파워쿼리 실행하기 : 새 통합문서를 실행한 뒤, 리본 메뉴에서 [데이터] - [데이터 가져오기] - [파일에서] - [폴더에서]를 차례로 선택합니다.

    엑셀 파워쿼리 폴더에서 병합

  4. 취합할 파일이 들어 있는 폴더로 이동한 뒤 [열기] 버튼을 클릭하면, 폴더 안의 파일 목록과 함께 파일 결합 대화상자가 표시됩니다. [데이터 변환] 버튼을 클릭합니다.

    엑셀 파일 병합 폴더에서 데이터변환

  5. 병합할 파일 필터링하기 : 파워쿼리 편집기가 실행되면 취합할 파일만 추려냅니다. Name 필드 옆 화살표를 클릭한 뒤 [텍스트 필터] - [포함]을 선택합니다.

    엑셀 취합할 파일 필터링

  6. 포함하는 값으로 "네이버_원피스_" 라는 문자열이 들어간 파일만 필터링합니다. 이렇게 필터링하면 폴더 안에 다른 파일이 있더라도 네이버_원피스에 해당하는 데이터만 자동으로 취합됩니다. [확인] 버튼을 클릭합니다.

    엑셀 네이버 쇼핑 파일 필터

  7. 파워쿼리로 파일 병합하기 : Content 필드 옆에 있는 아래쪽 화살표 두 개 모양의 버튼을 클릭하면 파일 병합 대화상자가 실행됩니다.

    엑셀 파워쿼리 파일 병합

  8. 샘플 파일로 첫 번째 파일을 선택하고, 매개변수에서 해당 시트를 선택하면 시트 안의 데이터가 오른쪽 미리보기에 표시됩니다. [확인] 버튼을 클릭하면 파일이 병합됩니다.

    엑셀 파워쿼리 파일 병합 완료

    오빠두Tip : 병합할 시트의 이름은 모든 파일에서 동일해야 합니다. 기존 예제파일의 시트명이 'group' 이라면, 새로 추가되는 파일의 시트명 또한 'group' 으로 맞춰야 정상적으로 병합됩니다.
  9. 파일 병합이 완료되어 모든 파일의 데이터가 하나의 표로 합쳐졌습니다.

    파워쿼리 데이터 가공 완료

    오빠두Tip : 상황에 따라 크롤링된 데이터의 머리글 순서가 달라질 수 있습니다. 예를 들어 어제 다운받은 데이터에서는 가격이 LABEL-6 이었지만, 오늘 다운받은 데이터에서는 가격이 LABEL-7 일 수 있습니다.
    파워쿼리는 머리글 이름을 기준으로 파일을 병합하므로, 크롤링된 데이터의 순번이 다르다면 각 파일의 머리글을 사전에 통일해야 합니다. 예를 들어 모든 파일의 가격 머리글을 [가격]으로 변경해 두면, 컬럼 순서가 달라도 동일한 데이터로 인식되어 정상적으로 병합됩니다.

병합된 데이터에서 불필요한 필드를 제거한 뒤, 남은 데이터를 분석에 적합한 형태로 가공해보겠습니다.

  1. 불필요한 필드 제거하기 : 파워쿼리 편집기에서 불필요한 필드를 선택한 뒤 마우스 우클릭 - [열 제거]를 선택하면 해당 열이 제거됩니다.
    오빠두Tip : 필드를 선택한 상태에서 키보드 Shift 키를 누른 채 다른 필드를 클릭하면, 두 필드 사이의 모든 열이 한 번에 선택됩니다.
  2. 등록일을 날짜 형태로 변경하기 : 등록일 필드를 선택한 뒤 [변환] - [값 바꾸기]로 이동합니다. 찾을 값으로 "등록일 " (등록일 뒤에 공백 한 칸을 포함)을 입력하고, 바꿀 항목은 빈칸으로 둔 뒤 [확인] 버튼을 클릭하여 텍스트를 제거합니다.
    엑셀 파워쿼리 데이터 가공
  3. 이번에는 [변환] - [서식] - [접미사 추가]를 차례로 선택한 뒤, 접미사로 "01"을 입력해 일(day) 정보를 보강합니다.

    파워쿼리 접미사 추가

  4. 등록일 필드의 머리글 왼쪽 데이터 형식 아이콘을 클릭하여 [날짜] 형식으로 변경합니다.

    엑셀 파워쿼리 데이터 날짜 변경

  5. 광고가 아닌 항목만 필터링하기 : 광고 여부가 입력된 필드의 화살표를 선택한 뒤 (Null) 값만 체크하고 [확인] 버튼을 클릭합니다. 이렇게 하면 광고가 아닌 일반 상품만 남게 됩니다.

    네이버 쇼핑 광고 필터링

  6. 이후 광고 필드를 우클릭한 뒤 [열 제거]를 선택하면 광고가 아닌 항목만 남기는 가공이 완료됩니다.

    파워쿼리 데이터 가공 완료

  7. 이 외에도 파일 이름을 참조하여 날짜 형식을 변경하거나, 여러 열에 나뉘어 입력된 가격을 하나의 열로 합치는 방법은 영상 강의에서 자세히 다루었습니다. 모든 데이터 가공을 마치면 아래와 같이 정돈된 형태의 데이터셋이 완성됩니다.
  8. 완성된 쿼리 출력하기 : [파일] - [닫기 및 로드]를 선택하면 취합·가공이 끝난 데이터가 새로운 시트에 표 형태로 출력됩니다.

    엑셀 파워쿼리 완성

엑셀 VBA 매크로를 활용하면 URL 주소로만 입력된 이미지를 엑셀 시트로 직접 불러올 수 있습니다. 이번 단계에서는 사용자 정의 함수인 xIMAGE 함수를 직접 만들어 사용해보겠습니다.

  1. 매크로 편집기 실행하기 : 리본 메뉴에서 [개발도구] - [Visual Basic] 버튼을 클릭하여 매크로 편집기를 실행합니다. 또는 키보드 Alt + F11 키를 눌러 매크로 편집기를 바로 열 수도 있습니다. 만약 리본 메뉴에 [개발도구] 탭이 보이지 않는다면, 아래 포스트를 참고하여 개발도구를 활성화합니다.
  2. xImage 함수 추가하기 : 매크로 편집기에서 [삽입] - [모듈]을 선택하여 새로운 모듈을 추가합니다. 이후 아래 명령문을 복사해 새 모듈에 붙여넣으면 xIMAGE 함수가 등록됩니다. xIMAGE 함수의 동작 원리에 대한 자세한 설명은 아래 관련 포스트를 참고하세요.
    Function xIMAGE(Link, Optional UpdateImage As Boolean = True) As Boolean
     
    Dim aRng As Range: Dim aWS As Worksheet
    Dim shpImg As Shape
     
    On Error Resume Next
     
    Set aRng = Application.Caller
    Set aWS = aRng.Parent
     
    Application.EnableEvents = False
     
    If IsEmpty(Link) Then Exit Function
     
    For Each shpImg In aWS.Shapes
        If shpImg.TopLeftCell.Address = aRng.Address Then
            If UpdateImage = True Then
                shpImg.Delete
            Else
                xIMAGE = True
                GoTo Final
                Exit Function
            End If
        End If
    Next
     
    Set shpImg = aWS.Shapes.AddPicture(Link, msoFalse, msoTrue, aRng.Left + 3, aRng.Top + 3, aRng.Width - 6, aRng.Height - 6)
    shpImg.Placement = xlMoveAndSize
     
    If shpImg Is Nothing Then xIMAGE = CVErr(xlValue)
     
    xIMAGE = True
    Exit Function
     
    Final:
    Set shpImg = Nothing:    Set aRng = Nothing:    Set aWS = Nothing
    Application.EnableEvents = True
     
    End Function
  3. 사용자 정의 함수 등록이 완료되었습니다. 매크로 편집기를 종료한 뒤, 다시 워크시트로 이동합니다.

    엑셀 이미지 추출 함수

  4. xImage 함수 입력하기 : 시트에서 임의의 셀을 선택한 뒤, =xImage( 를 입력합니다. 이후 URL 주소가 입력된 셀을 인수로 선택한 뒤 함수를 마무리하면, 해당 URL의 이미지가 셀 안으로 자동 삽입됩니다.

    엑셀 이미지 다운로드

    오빠두Tip : xImage 함수는 외부 웹에서 이미지를 받아오는 함수이므로, 여러 셀에 동시에 입력하면 엑셀이 멈추거나 처리 속도가 크게 느려질 수 있으니 주의합니다. 한 번에 너무 많은 셀에 적용하지 말고, 필요한 셀에만 단계적으로 입력하는 것을 권장합니다.
  5. 매크로 포함 통합문서로 저장하기 : 매크로가 포함된 파일은 일반 통합문서 형식으로 저장하면 매크로가 사라지므로, 반드시 매크로 사용 통합문서 형식으로 저장해야 합니다. [파일] - [다른 이름으로 저장]으로 이동한 뒤, 파일 형식을 "Excel 매크로 사용 통합문서(*.xlsm)"로 선택해 저장합니다.

    엑셀 매크로 사용 통합문서

    오빠두Tip : 엑셀에서 키보드 F12 키를 누르면 [다른 이름으로 저장] 대화상자를 빠르게 호출할 수 있습니다.
댓글 17
5 (11개 평가)
나비
나비 2021.05.07 23:35
유익한 정보 감사합니다~
hami****
hami**** 2021.05.08 10:02
감사합니다
유부능
유부능 2021.05.08 19:03
좋은 정보 나눔 감사드립니다.
에이사 버터필드
에이사 버터필드 2021.05.12 14:53
난생 처음봤어요 엑셀로 이런걸 다하네요. 와~~~
할리
할리 2021.05.15 14:38
진짜 너무신기해요.. ㅎㅎ 감사합니다
만법귀일
만법귀일 2021.05.21 10:13
이거 정말 편리하네요
글래스
글래스 2021.06.30 09:29
네이버쇼핑으로 검색했을 때 ㅠㅠ 저는 최대 15개까지만 뜨던데 어떻게 100개까지 나올까요? 지금 쇼핑 로직이 바껴서 추출이 안되는걸까요?
이혁준 Sasha
이혁준 Sasha 2022.12.26 11:45
할인권 기간이 종료 되었나요..?
오빠두엑셀
오빠두엑셀 작성자 2022.12.26 16:36
안녕하세요!
네 할인권 사용 기간이 종료되었습니다.
고도리
고도리 2023.06.08 08:37
감탄했습니다........ 진짜..

ximage 와 같이 사용중인데 새로고침을 하니 행높이가 초기화되네요....
ximage 도 다 풀리고요...
혹시 이문제도 해결이 가능할까요?

정말 유용한기능인데.. 신규파일 새로고침할때마다 행높이와 ximage로 불러온 사진을 다시 업데이트 하고있네요 ㅠㅠ
오빠두엑셀
오빠두엑셀 작성자 2023.06.08 14:17
안녕하세요.
함수를 작성한 셀의 행높이 자동맞춤 설정을 해제해보세요.
바로 해결되실겁니다.
감사합니다.
고도리
고도리 2023.06.11 12:18
행높이 자동맞춤 설정은 할줄 아는데 그걸 해제는....어떻게 할까요?
오빠두엑셀
오빠두엑셀 작성자 2023.06.12 22:32
안녕하세요.
행 머릿글 사이를 마우스 커서로 드래그하거나 행을 우클릭 - 행높이를 임의로 맞춰주시면 됩니다 :)
고도리
고도리 2023.06.14 09:44
아.. 행높이를 바꿔도... 새로고침으로 가지고 오니 행높이는 초기화되고 ximage 로 불러온 이미지들도 다 초기화 되서 없어져서 다시 불러와야 되더라구요.. 쌓일수록 로딩이 길어져서...
url 에서 가져오는방법말고 아에 이미지를 가져와서 붙여버리는 코딩은 없을까요?

^^;;; 너무 염치없는 질문인가요?
오빠두엑셀
오빠두엑셀 작성자 2023.06.14 17:17
VBA를 쓰면 가능합니다.
아래는 ChatGPT에서 얻은 함수이며, 적절히 수정하여 직접 사용해보시길 바랍니다.
Here is a simple VBA function to download an image from a URL and insert it into a specific cell in Excel. This function takes two parameters - the URL of the image, and the address of the cell where you want to insert the image.
Before you use this code, you have to make sure that you have added a reference to "Microsoft XML, v6.0" and "Microsoft Scripting Runtime" in your VBA environment. Here's how you can do this:

  1. Open VBA editor by pressing Alt + F11.</code></li><li><code style="color: var(--tw-prose-code);">In the VBA editor, go to Tools -> References.
  2. In the "References" dialog box, find "Microsoft XML, v6.0" and "Microsoft Scripting Runtime", and check the boxes next to them.
Here's the VBA function:

Sub DownloadAndInsertImage(url As String, cellAddress As String)
Dim xhr As MSXML2.XMLHTTP60
Dim bytes() As Byte
Dim stream As ADODB.Stream
Dim picture As Picture
Dim rng As Range

Set xhr = New MSXML2.XMLHTTP60
Set stream = New ADODB.Stream

' Download the image
With xhr
.Open "GET", url, False
.send
bytes = .responseBody
End With

' Save the image to a temporary file
With stream
.Type = adTypeBinary
.Open
.Write bytes
.SaveToFile "C:\Temp\temp.jpg", adSaveCreateOverWrite
.Close
End With

' Insert the image into the specified cell
Set rng = ThisWorkbook.ActiveSheet.Range(cellAddress)
Set picture = ThisWorkbook.ActiveSheet.Pictures.Insert("C:\Temp\temp.jpg")

With picture
.ShapeRange.LockAspectRatio = msoFalse
.Width = rng.Width
.Height = rng.Height
.Top = rng.Top
.Left = rng.Left
End With

' Delete the temporary file
Kill "C:\Temp\temp.jpg"
End Sub
You can use this function like this:

vba

Copy code
Sub Test() DownloadAndInsertImage "http://example.com/image.jpg", "A1" End Sub
Please note that the code above does not check for errors, such as when the URL is invalid or when the image cannot be inserted into the cell for some reason. You may want to add error checking code depending on your needs. Also, ensure that you have the necessary permissions to read/write files in the directory where the temporary image file is created.
강민준🤗
강민준🤗 2024.08.09 07:34
좋은 강의 감사합니다🙇‍♂️