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

크롬에서 무료로 제공되는 웹 크롤링 추가기능인 리스틀리와 엑셀 파워쿼리를 활용하여 웹 크롤링을 자동화 하는 방법을 단계별로 알아봅니다.

# VBA

작성자 :
오빠두엑셀
최종 수정일 : 2022. 12. 26. 16:35
URL 복사
메모 남기기 : (16)

No 코딩으로 가능한 크롬, 엑셀 웹 크롤링 자동화 | 리스틀리+파워쿼리

크롬+엑셀 웹 크롤링 자동화 목차 바로가기
영상강의

큰 화면으로 보기

예제파일 다운로드

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

  • [엑셀고급] 크롬 추가기능(리스틀리) + 파워쿼리 크롤링 예제
    예제파일
  • [엑셀고급] 크롬 추가기능(리스틀리) + 파워쿼리 크롤링 예제
    완성파일

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

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

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

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

리스틀리 API 사용방법


보충영상 예제파일 다운로드

  • [라이브강의] 크롬 추가기능을 활용한 엑셀 크롤링
    예제파일
  • [라이브강의] 크롬 추가기능을 활용한 엑셀 크롤링
    완성파일

xIMAGE 함수 추가기능 업데이트

엑셀 매크로 사용이 어려우신 분들을 위하여 xIMAGE 함수 추가기능을 제작하여 업로드 였습니다.

엑셀 xIMAGE 함수 추가기능 썸네일
xIMAGE 함수 추가기능 다운로드

리스틀리 설치방법

리스틀리는 현재 보고 있는 페이지를 엑셀로 다운받을 수 있는 무료 추가기능입니다. 크롬과 웨일, 엣지 브라우저에서 사용가능합니다.

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

    리스틀리 설치
    리스틀리 설치 페이지로 이동합니다.
  2. Chrome에 추가(또는 웨일 및 엣지 추가) 버튼을 클릭합니다.
    리스틀리 크롬에 추가
    Chrome에 추가 버튼을 클릭합니다.
    오빠두Tip : 리스틀리는 크롬기반의 브라우저(크롬, 엣지, 웨일) 에서만 지원됩니다.
  3. 확장 프로그램 추가 버튼을 클릭하면 설치가 완료됩니다.

    크롬 웹 크롤링 확장 프로그램 추가
    확장 프로그램 추가 버튼을 클릭합니다.
  4. 리스틀리를 항상 고정하기 : 크롬 화면 오른쪽 상단에 퍼즐모양 아이콘을 클릭 - 리스틀리 모양 오른쪽 핀 모양 아이콘을 클릭해서 리스틀리가 항상 보이도록 고정합니다.

    리스틀리 확장프로그램 등록
    리스틀리 오른쪽 핀 모양 아이콘을 클릭하여 크롬에 항상 고정합니다.
  5. 리스틀리 설치가 완료되었습니다. 이제 원하는 페이지로 이동한 뒤 LISTLY WHOLE 버튼을 클릭하면 현재 페이지를 자동으로 크롤링합니다.

    크롬 웹 크롤링 다운로드
    리스틀리를 실행하면 페이지가 자동으로 크롤링됩니다.

리스틀리로 웹페이지 크롤링하기

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

  1. 네이버 쇼핑페이지 URL 분석 : 네이버 쇼핑페이지로 이동합니다. (https://shopping.naver.com/)
  2. 쇼핑페이지에서 원하는 카테고리로 이동합니다. 이번 강의에서는 패션의류 - 여성의류 - 원피스 카테고리로 이동하겠습니다.

    엑셀 네이버 쇼핑 크롤링 원피스
    네이버 쇼핑 페이지 원하는 카테고리로 이동합니다.
  3. 쇼핑페이지 결과페이지 오른쪽 위에서 검색결과 보기 개수를 80개로 변경합니다.

    네이버 쇼핑 결과 개수
    검색 결과 보기 개수를 80개로 변경합니다.
  4. 검색결과 보기 개수를 80개로 변경하면, URL 주소가 변경되며 URL 주소 중간에 pagingSize=80 이라는 쿼리가 추가됩니다. 이 쿼리에서 숫자를 100으로 변경합니다.
    네이버 크롤링 쿼리 분석
    검새결과 URL쿼리의 pagingSize 값을 100으로 변경합니다.
    오빠두Tip : 네이버 쇼핑페이지 검색결과를 항목으로 출력할 시 표시개수는 최대 100개까지 가능합니다.
  5. 네이버 쇼핑페이지 크롤링 : 마우스 스크롤을 아래로 쭉 내려서 모든 데이터를 로딩 한 후, 리스틀리 아이콘을 클릭 - LISTLY WHOLE 을 클릭합니다.
    크롬 웹 크롤링 다운로드
    리스틀리로 전체 페이지를 크롤링합니다.
    오빠두Tip : 리스틀리를 회원가입하지 않고 사용하면 횟수 제한 없이 무제한으로 사용가능합니다.
  6. 리스틀리-엑셀 다운로드 : 네이버 쇼핑페이지의 모든 항목이 크롤링되었습니다. 기본항목 100개 + 광고항목 6개로 총 106개가 크롤링 되었습니다. [엑셀] 버튼을 클릭합니다.

    엑셀 크롤링 결과 다운로드
    검색결과를 엑셀로 다운로드합니다.
  7. 크롤링 결과가 엑셀 파일로 다운로드 되었습니다. 이제 다운받은 데이터를 필요에 따라 자유롭게 가공해서 사용할 수 있습니다.

    크롤링 엑셀 파일 다운로드 완료
    크롤링 결과가 엑셀파일로 다운로드 되었습니다.

파워쿼리로 여러 엑셀파일 취합하기

일반적으로 크롤링은 매일 또는 매주 주기적으로 반복된 데이터를 가져오는 작업으로 진행됩니다. 따라서 이번 강의에서는 매일 다운받은 데이터를 파워쿼리를 사용하여 자동으로 취합하는 방법을 소개해드리겠습니다.

  1. 폴더 안에 파일 모으기 : 예제파일을 다운받은 뒤, 압축파일 안에 있는 네이버_원피스 크롤링 파일을 바탕화면의 새로운 폴더로 이동합니다.

    엑셀 파일 폴더 이동
    다운받은 엑셀 파일을 한 폴더안에 모아줍니다.
  2. 새롭게 다운받은 네이버 원피스 크롤링 엑셀파일을 동일한 폴더로 이동한 뒤, 파일 이름을 "네이버_원피스_YYYY-MM-YY" 형태로 변경합니다.

    크롤링 엑셀 파일 이름 변경
    새롭게 다운 받은 파일을 동일한 형태의 파일명으로 변경합니다.
  3. 파워쿼리 실행하기 : 새로운 통합문서를 실행합니다. 이후 [데이터] - [데이터 가져오기] - [파일에서] - [폴더에서]를 선택합니다.

    엑셀 파워쿼리 폴더에서 병합
    새로운 통합문서에서 데이터 - 데이터 가져오기 - 파일에서 - 폴더에서로 이동합니다.
  4. 취합할 파일이 있는 폴더로 이동한 뒤, [열기] 버튼을 클릭하면 폴더 안의 파일목록과 함께 파일결합 대화상자가 나옵니다. [데이터 변환] 버튼을 클릭합니다.

    엑셀 파일 병합 폴더에서 데이터변환
    데이터 변환 버튼을 클릭합니다.
  5. 병합할 파일 필터링하기 : 파워쿼리가 실행됩니다. 이제 취합하고자 하는 파일만 필터링하겠습니다. Name 옆 화살표를 클릭한 후, [텍스트필터] - [포함] 으로 이동합니다.

    엑셀 취합할 파일 필터링
    Name 의 화살표를 클릭 - 텍스트 필터 - 포함으로 이동합니다.
  6. 포함하는 값으로 "네이버_원피스_" 라는 문자열을 포함한 파일만 필터링합니다. 이렇게 필터링하면 폴더안에 다른 파일이 있더라도 네이버_원피스에 해당하는 데이터만 취합합니다. [확인] 버튼을 클릭합니다.

    엑셀 네이버 쇼핑 파일 필터
    네이버_원피스_를 포함하는 파일만 필터링합니다.
  7. 파워쿼리로 파일 병합하기 : Content 옆 아래쪽 화살표 2개 모양의 버튼을 클릭하면 파일이 병합 대화상자가 실행됩니다.

    엑셀 파워쿼리 파일 병합
    아래쪽 화살표 두개가 있는 버튼을 클릭하여 파일을 병합합니다.
  8. 샘플파일로 첫번째 파일, 매개변수에서 해당 시트를 선택하면 시트안에 데이터가 오른쪽으로 표시됩니다. [확인] 버튼을 클릭하면 파일이 병합됩니다.
    엑셀 파워쿼리 파일 병합 완료
    샘플파일과 시트 선택 후, 확인을 클릭합니다.
    오빠두Tip : 병합할 시트의 이름은 반드시 동일해야 합니다. 기존 예제파일의 시트명은 'group' 이므로 새롭게 추가되는 파일의 시트명 또한 'group' 이여야 합니다.
  9. 파일 병합이 완료되었습니다.
    파워쿼리 데이터 가공 완료
    파일 병합이 완료됩니다.
    오빠두Tip : 상황에 따라 크롤링 된 데이터의 머리글 순번이 다를 수 있습니다. 예를들어 어제 다운받는 데이터의 가격에 대한 머리글이 LABEL-6 이였다가, 오늘 다운 받은 데이터에서는 가격의 머리글이 LABEL-7 일 수 있습니다.
    파워쿼리는 머릿글을 참조하여 파일을 병합하므로, 만약 크롤링 된 데이터의 순번이 다르다면 파일의 머리글을 맞춰줘야 합니다. 예를들어 모든 파일의 머리글을 [가격]으로 변경하면, 머리글의 순서가 다르더라도 [가격]이라는 머리글을 인식하여 파일을 병합합니다.

취합된 데이터의 불필요한 필드 제거 및 가공

취합한 데이터에서 불필요한 필드를 제거 후 남아있는 데이터를 올바른 형태로 가공하겠습니다.

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

    파워쿼리 접미사 추가
    등록일 뒤로 접미사를 추가합니다.
  4. 등록일 머리글 왼쪽 데이터 형식을 날짜로 변경합니다.

    엑셀 파워쿼리 데이터 날짜 변경
    등록일의 데이터 형식을 날짜로 변경합니다.
  5. 광고가 아닌 항목만 필터링하기 : 광고가 입력된 필드의 화살표 선택 후 (Null) 값만 체크 후 [확인] 버튼을 클릭합니다. 그러면 광고가 아닌 항목만 필터링됩니다.

    네이버 쇼핑 광고 필터링
    광고가 입력된 열에서 광고를 표시항목에서 제외합니다.
  6. 이후 광고 필드를 우클릭 - 열제거를 하면 광고가 아닌 항목만 필터링이 완료됩니다.

    파워쿼리 데이터 가공 완료
    광고가 아닌 제품만 표시되었습니다.
  7. 이 외에도 파일이름을 참조하여 날짜 형식 변경, 여러 열로 나뉘어 입력된 가격을 하나의 열로 합치는 방법에 대한 내용은 영상 강의에서 자세히 다뤄드렸습니다. 모든 데이터 가공을 완료하면 아래와 같이 데이터가 완성됩니다.
  8. 완성된 쿼리 출력하기 : [파일] - [닫기 및 로드]를 선택하면 취합된 데이터 가 새로운 시트에 표로 출력됩니다.

    엑셀 파워쿼리 완성
    데이터 취합 필 가공, 필터링이 모두 완료되었습니다.

xImage 함수 전체 명령문 및 사용법

엑셀 VBA 매크로를 사용하면 URL로 입력된 이미지를 엑셀에 바로 받아올 수 있습니다.

  1. 매크로 편집기 실행하기 : 리본 메뉴에서 [개발도구] - [Visual Basic] 버튼을 클릭하여 매크로 편집기로 이동합니다. 또는 키보드 Alt + F11 키를 눌러 매크로편집기를 바로 실행할 수 있습니다. 만약 엑셀 상단에 개발도구가 안 보이실 경우, 아래 개발도구 활성화 방법 포스트를 참고하여 개발도구를 활성화합니다.
  2. 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. 사용자 함수 추가가 완료되었습니다. 이제 매크로 편집기를 종료한 뒤, 다시 시트로 이동합니다.

    엑셀 이미지 추출 함수
    모듈에 xIMAGE 함수 추가 후 매크로 편집기를 종료합니다.
  4. xImage 함수 입력하기 : 시트 위 아무 셀을 선택한 뒤, =xImage( 를 입력합니다. 이후 URL 주소가 입력된 셀을 선택 후 함수를 입력하면 이미지가 불러와집니다.
    엑셀 이미지 다운로드
    시트위 셀에 xImage 함수를 입력합니다.
    오빠두Tip : xImage 함수는 웹에서 이미지를 받아오는 함수입니다. 따라서 xImage 함수를 여러 셀에 동시에 입력할 경우 엑셀이 멈추거나 처리속도가 느려질 수 있으므로 주의합니다.
  5. 매크로 포함 통합문서로 저장하기 : 매크로가 포함된 파일은 저장할 때 매크로가 포함된 통합문서로 저장해야 합니다. [파일] - [다른 이름으로 저장]으로 이동한 후, 파일 형식을 "Excel 매크로 사용 통합문서" 로 저장합니다.
    엑셀 매크로 사용 통합문서
    매크로가 포함된 파일은 반드시 매크로 사용 통합문서로 저장해야 합니다.
    오빠두Tip : 엑셀에서 키보드 F12 키를 누르면 다른이름으로 저장을 빠르게 실행할 수 있습니다.
5 7 투표
게시글평점
16 댓글
Inline Feedbacks
모든 댓글 보기
16
0
여러분의 생각을 댓글로 남겨주세요.x