Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

IT Info

Google 스프레드시트로 웹사이트 정보 쉽게 긁어오는 방법

권현욱(엑셀러) 2023. 11. 10. 14:00
반응형

웹 스크래핑은 웹사이트에서 정보를 추출하고 자동으로 분석하는 강력한 기술입니다. 이 작업을 수동으로 하려면 시간이 많이 걸리고 지루할 수 있습니다. 엑셀에도 '웹 쿼리' 기능이 있습니다만, 구글 스프레드시트는 더욱 편리하게 처리할 수 있습니다.

구글 스프레드시트의 IMPORTXML을 사용하면 웹 페이지에서 데이터를 쉽게 스크랩하여 분석, 보고 또는 기타 데이터 작업에 활용할 수 있습니다.

권현욱(엑셀러) | 아이엑셀러 닷컴 대표 · Microsoft Excel MVP · Excel 솔루션 프로바이더 · 작가

※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 제 개인 의견이나 추가 자료들이 다수 포함되어 있습니다. 원문 내용이 궁금하신 분은 URL을 살펴보세요.


  • 원문: How to Scrape Data From a Website With Google Sheets
  • URL: https://www.makeuseof.com/google-sheets-how-to-scrape-website-data/

구글 스프레드시트의 IMPORTXML 함수 사용

Google 스프레드시트에는 XML, HTML, RSS 같은 웹 형식에서 데이터를 가져올 수 있는 IMPORTXML이라는 기능이 있습니다. 이 기능을 이용하면 복잡한 코딩에 의존하지 않고 웹사이트에서 데이터를 수집할 수 있습니다.

IMPORTXML의 기본 구문은 다음과 같습니다.

=IMPORTXML(url, xpath_query)
  • url : 데이터를 스크랩하려는 웹페이지의 URL입니다.
  • xpath_query : 추출하려는 데이터를 정의하는 XPath 쿼리입니다.

XPath(XML 경로 언어)는 HTML을 포함한 XML 문서를 탐색하는 데 사용되는 언어로, HTML 구조 내에서 데이터 위치를 지정할 수 있습니다. IMPORTXML을 올바르게 사용하려면 XPath 쿼리를 이해하는 것이 필수적입니다.

XPath 이해

XPath는 HTML 문서에서 데이터를 탐색하고 필터링하기 위한 다양한 기능과 표현식을 제공합니다. 포괄적인 XML 및 XPath 가이드는 이 기사의 범위를 벗어나므로 몇 가지 필수 XPath 개념에 대해 설명합니다. html과 css에 대한 어느 정도의 지식이 필요합니다.

  • 요소 선택: 경로를 표시하기 위해 / 및 //를 사용하여 요소를 선택할 수 있습니다. 예를 들어 /html/body/div는 문서 본문의 모든 div 요소를 선택합니다.
  • 속성 선택: 속성을 선택하려면 @ 를 사용할 수 있습니다. 예를 들어 //@href는 페이지의 모든 href 속성을 선택합니다.
  • 조건자 필터: 대괄호( [ ] )로 묶인 조건자를 사용하여 요소를 필터링할 수 있습니다. 예를 들어 /div[@class="container"]는 클래스가 컨테이너인 모든 div 요소를 선택합니다.
  • 함수: XPath는 텍스트 내용이나 속성 값 확인과 같은 특정 작업을 수행하기 위해 contain() , start-with() 및 text()와 같은 다양한 함수 제공합니다.

웹사이트에서 XPath를 추출하는 방법

지금까지 IMPORTXML 구문과 웹 사이트의 URL, 추출하려는 요소를 알아보았습니다. 하지만 요소의 XPath는 어떻게 얻을까요?

IMPORTXML을 사용하여 데이터를 추출하기 위해 웹사이트의 구조를 외울 필요는 없습니다. 실제로 모든 브라우저에는 모든 요소의 XPath를 즉시 복사할 수 있는 멋진 도구가 있습니다. 이 도구를 사용하면 웹사이트 요소에서 XPath를 추출할 수 있습니다. 방법은 다음과 같습니다.

  1. 선호하는 웹 브라우저를 사용하여 스크랩하려는 웹 페이지로 이동합니다.
  2. 긁어내고 싶은 요소를 찾습니다.
  3. 요소를 마우스 오른쪽 버튼으로 클릭합니다.
  4. 마우스 오른쪽 버튼 클릭 메뉴에서 요소 검사를 선택합니다. 브라우저에서 웹페이지의 HTML 코드를 표시하는 패널이 열립니다. 관련 HTML 요소가 코드에서 강조 표시됩니다.
  5. 요소 검사 패널에서 HTML 코드에서 강조 표시된 요소를 마우스 오른쪽 버튼으로 클릭합니다.
  6. XPath 복사를 클릭하여 요소의 XPath 주소를 클립보드에 복사합니다.

이제 필요한 모든 것을 얻었으므로 IMPORTXML이 실제로 작동하는 모습을 보고 일부 링크를 스크랩할 시간입니다.

IMPORTXML을 사용하여 웹사이트에서 링크를 긁어오는 방법

IMPORTXML을 사용하여 웹사이트에서 모든 종류의 데이터를 긁어올 수 있습니다. 여기에는 링크, 비디오, 이미지 및 웹사이트의 거의 모든 요소가 포함됩니다. 링크는 웹 분석에서 가장 눈에 띄는 요소 중 하나이며, 링크된 페이지를 분석하는 것만으로도 웹사이트에 대해 많은 것을 배울 수 있습니다.

IMPORTXML을 사용하면 Google Sheets에서 링크를 빠르게 스크랩한 다음 Google Sheets가 제공하는 다양한 기능을 사용하여 추가로 분석할 수 있습니다.

모든 링크 긁기

웹페이지에서 모든 링크를 긁어내려면 다음 수식을 사용할 수 있습니다.

=IMPORTXML(url, "//a/@href")

이 XPath 쿼리는 요소의 모든 href속성을 선택하여 페이지의 모든 링크를 효과적으로 추출합니다.

(이미지: makeuseof.com)

=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//a/@href")

위의 수식은 Wikipedia 기사의 모든 링크를 긁어옵니다.

[TIP] 별도의 셀에 웹페이지의 URL을 입력한 후 해당 셀을 참조하는 것이 좋습니다. 이렇게 하면 수식이 너무 길어지거나 다루기 어려워지는 것을 방지할 수 있습니다. XPath 쿼리에서도 동일한 작업을 수행할 수 있습니다.

모든 링크 텍스트 긁기

URL과 함께 링크 텍스트를 추출하려면 다음을 사용할 수 있습니다.

=IMPORTXML(url, "//a")

이 쿼리는 모든 요소를 ​​선택하고 결과에서 링크 텍스트와 URL을 추출할 수 있습니다.

(이미지: makeuseof.com)

=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//a")

위 수식은 동일한 Wikipedia 문서의 링크 텍스트를 가져옵니다.

때로는 기준에 따라 특정 링크를 스크랩해야 할 수도 있습니다. 예를 들어 특정 키워드가 포함된 링크나 페이지의 특정 섹션에 있는 링크를 추출하는 데 관심이 있을 수 있습니다. XPath에 대한 올바른 지식을 바탕으로 원하는 요소를 정확히 찾아낼 수 있습니다.

특정 키워드가 포함된 링크를 스크랩하려면 Contains() XPath 함수를 사용할 수 있습니다.

=IMPORTXML(url, "//a[contains(@href, 'keyword')]/@href")

이 쿼리는 href에 지정된 키워드가 포함된 요소의 href 속성을 선택합니다.

(이미지: makeuseof.com)

=IMPORTXML("https://en.wikipedia.org/wiki/Nine_Inch_Nails", "//a[contains(@href, 'record')]/@href")

위 수식은 샘플 Wikipedia 기사 내 텍스트에 'record'라는 단어가 포함된 모든 링크를 긁어옵니다.

페이지의 특정 섹션에서 링크를 스크랩하려면 해당 섹션의 XPath를 지정하면 됩니다. 예를 들어, 다음  쿼리는 "섹션" 클래스가 있는 div 요소 내에서 요소의 href 속성을 선택합니다.

=IMPORTXML(url, "//div[@class='section']//a/@href")

(이미지: makeuseof.com)

 

웹 스크래핑 이상의 용도로 IMPORTXML을 사용할 수 있다는 점은 주목할 가치가 있습니다. IMPORT 기능 계열을 사용하여 웹사이트의 데이터 테이블을 Google 스프레드시트로 가져올 수 있습니다.

Google Sheets와 Excel은 대부분의 기능을 공유하지만 IMPORT 기능 계열은 Google Sheets에만 있습니다. 웹사이트에서 Excel로 데이터를 가져오려면 다른 방법을 고려해야 합니다.

반응형