엑셀 크롤링1. 엑셀로 웹크롤링을 하는 방법(기초)
1. 웹크롤링이란?
웹 크롤링(Web Crawling)이란 인터넷 상에 존재하는 웹 페이지들을 자동으로 탐색하여 정보를 수집하는 자동화 과정입니다. 다른 말로 웹 스크래핑(Web Scraping)이라고도 불립니다. 웹 크롤링은 대부분의 경우 웹 데이터를 수집하거나 분석하기 위해 사용됩니다. 웹 크롤링의 주요 목적은 하기와 같습니다.
웹 크롤링 목적:
데이터 수집: 웹상의 다양한 정보를 수집하여 엑셀 등과 같은 누적 관리 시트에 자동으로 축적할 수 있습니다.
검색 엔진: 특정 검색엔진을 만들어 웹상의 정보를 자동 수집하여 사용자가 필요한 형태로 가공할 수 있습니다.
가격 비교: 상품의 가격이나 정보를 수집하여 다양한 온라인 상품 비교 사이트에 활용합니다.
뉴스 및 블로그 모니터링: 특정 키워드나 주제에 대한 뉴스나 블로그 글을 자동으로 수집하여 모니터링합니다.
웹크롤링의 방식은 여러가지가 있으며, 앞으로 몇번으로 나뉘어서 엑셀에서 가능한 크롤링에 대해서 포스팅하겠습니다.
2. 엑셀에서 가능한 크롤링의 종류
① 파워쿼리를 활용한 웹URL기준 크롤링
엑셀 자체에 내장되어 있는 파워쿼리라는 기능을 사용하면 간략한 URL의 구성요소를 쿼리화하여 자동으로 크롤링할 수 있습니다. 먼저 하기 이미지와 같이 데이터 탭에서 "웹"을 클릭합니다. 그러면 하기와 같은 창이 나타납니다.
이 창에 크롤링을 하고 싶은 URL을 기입만 해주면 모든 준비가 완료됩니다.
해당 내용의 실제 적용방법 및 상세 활용방법은 다음 포스팅에서 상세히 설명드리겠습니다.
② VBA xmlHttp, HTML Document라이브러리를 활용한 크롤링
엑셀 VBA는 웹사이트의 HTML을 분석하여 해당 URL의 구성요소(테이블, 태그, 하위 텍스트 등)를 가지고 오는 것이 가능합니다. 이를 위해서는 VBA에서 참조설정으로 xmlHttp라는 라이브러리나 HTML Document라는 라이브러리를 사용하여
특정 URL을 기입하고 코딩을 통해 해당 URL의 HTML요소에서 원하는 항목을 가지고 올 수 있습니다.
예를들면 하기의 구문을 복사한뒤 VBA에 신규로 모듈을 추가하여 복사 붙여넣기 한 다음, url = 부분에 필요한 웹사이트의 URL을 넣어주면 해당 URL의 HTML요소가 출력됩니다.
Sub GetHTMLUsingXMLHTTP()
Dim xmlhttp As Object
Set xmlhttp = CreateObject("MSXML2.XMLHTTP")
' 웹 페이지 URL 설정
url = "https://example.com"
' HTTP 요청 보내기
xmlhttp.Open "GET", url, False xmlhttp.send
' 응답 받은 HTML 출력
MsgBox xmlhttp.responseText
End Sub
혹은 하기와 같이 HTML Document라는 라이브러리를 활용, 인터넷 익스플로러를 오브젝트로 만들어서 필요한 URL의 HTML요소를 따오는 것도 가능합니다.
Sub ExtractDataFromHTML()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")
' 웹 페이지 URL 설정
url = "https://example.com"
' IE로 웹 페이지 열기
IE.navigate url
IE.Visible = True
' 페이지 로딩 대기
Do While IE.readyState <> 4 DoEvents
Loop
' HTMLDocument 객체 생성
Set doc = IE.document
' 원하는 데이터 추출 (예: 특정 태그의 내용)
MsgBox doc.getElementsByTagName("p")(0).innerText
End Sub
하지만, 이 VBA자체 라이브러리를 활용한 방법은 제대로 사용하려면 어느정도 VBA에 대한 지식이 선행되어 필요하며 가지고 온 HTML요소 중에 필요한 항목을 다시 정제해서 가공해줄 필요가 있다는 단점이 존재합니다.
(전문적으로는 이를 JSON이라는 형태로 가져온 Data에서 Parsing하는 작업이 추가로 필요합니다.)
③ 셀레니움을 활용한 크롤링
셀레니움(Selenium)은 웹 브라우저를 자동으로 조작하고 테스트하는 데 사용되는 오픈 소스 프레임워크입니다. 무료로 해당 프레임워크를 설치해주면 바로 사용이 가능합니다만, 특정 프로그래밍 언어와 연동하여 웹 스크래핑이나 웹 데이터 수집으로도 사용될 수 있습니다. Selenium은 여러 프로그래밍 언어에서 지원되며, 자바, 파이썬, C#, Ruby, VBA 등 다양한 언어로 연동되어 활용할 수 있습니다. 엑셀에서 이 Selenium을 활용하면 특정 웹 페이지를 자동으로 클릭, 조작하거나 데이터를 수집하는 등의 작업을 수행할 수 있습니다. 이를 통해 엑셀 VBA와 Selenium을 결합하여 웹 스크래핑 및 자동화 작업을 수행할 수 있습니다.
셀레니움의 설치방법 및 자동화 방법은 다음 포스팅에서 설명드리겠습니다.
3.웹크롤링을 통한 수익창출이 가능한가
웹 크롤링은 웹사이트의 내용을 자동으로 특정 파일에 축척하여 분석하거나, 웹사이트의 자동 등록등도 가능하기 때문에 다른 어떤 기능보다도 수익창출에 용이합니다.
하지만, 반드시 웹크롤링을 시작하기 전에 윤리적, 법적 측면에서 가부를 판단해야합니다. 정리하자면, 하기와 같은 점을 사전에 충분히 숙지한 다음 수익창출에 활용해도 문제가 없는지 판단해야합니다.
합법성 및 이용 약관: 웹 크롤링을 수행하기 전에 해당 웹 사이트의 이용 약관을 확인하고 준수해야 합니다. 일부 웹 사이트는 자동화된 크롤링을 금지하고 있을 수 있습니다. 이를 어기면 법적 문제가 발생할 수 있습니다.
윤리적 사용: 웹 크롤링을 통해 수집하는 데이터가 개인 정보나 민감한 정보를 포함하는 경우, 해당 정보를 적절하게 다루고 보호해야 합니다. 윤리적으로 투명하게 데이터를 활용해야 합니다.
데이터 활용 목적: 웹 크롤링을 통한 데이터 수집을 어떤 목적으로 하는지에 대해 신중한 고려가 필요합니다. 일부 웹 사이트는 상업적인 목적으로 크롤링을 금지하고 있을 수 있습니다.
사용 권한: 크롤링을 통해 수집한 데이터를 어떻게 사용할지에 대한 권한을 확인해야 합니다. 데이터의 출처에 대한 정보를 명확하게 기록하고, 출처에서 허용하는 범위 내에서만 데이터를 사용해야 합니다.
경쟁 환경: 유사한 데이터를 크롤링하는 것이 경쟁적인 이점을 가져올 수 있습니다. 그러나 이는 불공정한 경쟁이 될 수 있으며, 다른 기업 또는 개인의 권리를 침해할 수 있습니다.
가치 창출: 크롤링을 통해 수집한 데이터를 어떻게 가공하고 가치를 창출할지 고민해야 합니다. 데이터를 분석하거나 특정 서비스를 제공하여 수익을 창출할 수 있습니다.
웹 크롤링을 통한 수익 창출은 가능하지만 합법성, 윤리, 데이터 보호 등 다양한 측면에서 주의가 필요합니다. 합법적이고 윤리적인 방식으로 크롤링을 수행하는 것이 중요합니다. 다음 포스팅부터 실제 사용방법들을 소개하겠습니다.