TL;DR
- Google AI 개요는 Gemini 기반 기능으로, 검색 결과 상단에 출처 링크와 함께 AI 요약문을 제공합니다.
- AI 개요는 200개 이상의 국가와 40개 이상의 언어로 제공되며, 일반적인 LLM 응답이 아닌 실제 SERP 결과를 기반으로 합니다.
- 스크래핑에는 자바스크립트 렌더링과 동적 “더 보기” 버튼으로 인해 브라우저 자동화를 위한 Playwright가 필요합니다.
- 이 과정에는 Google로 이동, 쿼리 제출, AI 개요 로드 대기, HTML 추출, Markdown 변환이 포함됩니다.
- 마크다운 변환은 AI에 적합한 데이터 형식을 위해 구조(링크, 글머리 기호, 제목)를 유지합니다.
- Google은 reCAPTCHA로 자동 스크래퍼를 차단하므로, 대규모 작업에는 reCAPTCHA 해결, 프리미엄 프록시 또는 AI 에이전트 브라우저가 필요합니다.
이 글에서 여러분은 다음을 배울 수 있습니다:
- Google AI 개요란 무엇인가.
- 작동 방식 및 스크래핑의 가치
- 단계별 튜토리얼을 통해 Google AI 개요를 스크래핑하는 방법.
- 관련된 과제와 이를 극복하는 방법.
자, 시작해 보겠습니다!
Google AI 개요란 무엇인가?
Google AI 개요는 Google 검색에 통합된 기능으로, 검색 결과 상단에 AI가 생성한 요약 정보를 제공합니다. 이 기능은 Google의 Gemini 대규모 언어 모델을 기반으로 작동합니다.

이 개요는 여러 웹 소스의 정보를 종합하여 사용자의 질의에 대한 간결한 답변을 제공합니다. 종종 원본 기사 링크를 포함하여 사용자가 더 깊이 탐구할 수 있도록 돕습니다.
2026년 5월 현재, AI 개요는 200개 이상의 국가 및 지역과 40개 이상의 언어로 제공됩니다. 원래 이 기능은 미국에서만 이용 가능했습니다.
참고: AI 개요를 Google AI 모드와 혼동하지 마십시오. 최적의 결과를 위해 Google AI 모드 스크래핑 방법도 알아보세요.
구글 AI 개요를 스크래핑해야 하는 이유
Google AI 개요 응답은 Gemini나 다른 AI 제공자가 생성할 수 있는 일반적인 응답 이상입니다. 핵심 차이점은 SERP(검색 엔진 결과 페이지) 링크와 해당 링크 내 콘텐츠에 기반한다는 점입니다.
다시 말해, 실제 기사, 페이지, 사이트를 기반으로 하며 종종 추가 읽기 및 확장 링크를 포함합니다. 이는 대규모 언어 모델(LLM)이 일반적으로 수행하기 어려운 부분입니다.
따라서 Google AI 개요를 프로그래밍 방식으로 스크래핑하면 실제 SERP 결과를 활용하여 RAG 최적화 응답을 생성하는 일종의 AI 기반 SERP 챗봇을 구축할 수 있습니다. 핵심은 현재 검증 가능한 웹 콘텐츠에 기반한 답변을 얻는 것입니다.
이 글 마지막 부분에서 살펴보겠지만, 이 접근법은 분명 흥미롭지만 몇 가지 고유한 어려움이 존재합니다. 따라서 RAG를 통해 SERP 챗봇을 구축하는 방법에 대한 저희 가이드를 참고해 보시기 바랍니다.
파이썬으로 Google AI 개요 스크래핑하는 방법: 단계별 가이드
이 튜토리얼 섹션에서는 Google AI 개요 스크래핑 과정을 안내합니다. 다음을 수행하는 Python 스크립트 구축 방법을 배우게 됩니다:
- Google에 연결합니다.
- 검색 쿼리 수행.
- AI 개요가 로드될 때까지 대기합니다.
- 해당 페이지의 HTML을 스크래핑합니다.
- 내용을 마크다운으로 변환합니다.
- 출력 파일로 내보냅니다.
Google AI 개요 스크래핑 수행 방법을 보려면 아래 단계를 따르세요! 수동 접근을 건너뛰고 싶다면 전용 Google AI 개요 스크래퍼를 사용해 볼 수 있습니다.
1단계: 프로젝트 설정
시작하기 전에 컴퓨터에 Python 3이 설치되어 있는지 확인하세요. 설치되어 있지 않다면 다운로드하여 설치 마법사를 따라 설치하세요.
터미널을 열고 다음 명령어를 실행하세요:
mkdir google-ai-overview-scraper
cd google-ai-overview-scraper
python -m venv venv
이렇게 하면 스크래퍼 프로젝트용 새 폴더 google-ai-overview-scraper/가 생성되고 가상 환경이 초기화됩니다.
선호하는 Python IDE에서 프로젝트 폴더를 로드하세요. PyCharm Community Edition이나 Python 확장 기능이 설치된 Visual Studio Code가 좋은 선택지입니다.
프로젝트 폴더 내에 scraper.py 파일을 생성하세요:
google-ai-overview-scraper/
├── venv/ # Python 가상 환경
└── scraper.py # 스크래핑 스크립트
scraper.py는 현재 빈 스크립트이지만 곧 스크래핑 로직이 포함될 것입니다.
IDE 터미널에서 가상 환경을 활성화하세요. Linux 또는 macOS에서는 다음 명령어를 실행하세요:
source ./venv/bin/activate
Windows에서는 다음 명령을 실행하세요:
venv/Scripts/activate
좋습니다! 이제 스크래핑 프로젝트를 위한 깨끗한 Python 환경이 설정되었습니다.
2단계: Playwright 설치
Google은 동적인 플랫폼으로, 최근 업데이트로 대부분의 페이지를 완전히 로드하려면 자바스크립트 실행이 필요합니다. 또한 유효한 Google 검색 URL을 수동으로 작성하는 것은 까다로울 수 있습니다. 따라서 Google 검색과 상호작용하는 가장 좋은 방법은 브라우저에서 사용자 행동을 시뮬레이션하는 것입니다.
다시 말해, “AI 개요” 섹션을 스크래핑하려면 브라우저 자동화 도구가 필요합니다. 이를 통해 실제 브라우저를 실행하고, 웹 페이지를 로드하며, 사용자와 동일하게 프로그래밍 방식으로 상호작용할 수 있습니다.
파이썬용 최고의 브라우저 자동화 도구 중 하나는 Playwright입니다. 활성화된 파이썬 가상 환경에서 pip 패키지를 통해 Playwright를 설치하세요:
pip install playwright
이제 다음 명령어로 Playwright 설치를 완료하세요:
python -m playwright install
이 명령어는 Playwright가 웹 브라우저를 제어하는 데 필요한 실행 파일 및 기타 구성 요소를 다운로드합니다.
이 도구 사용에 대한 자세한 내용은 Playwright를 활용한 웹 스크래핑 가이드를 참조하세요.
좋습니다! 이제 Google의 AI 개요 섹션을 스크래핑하기 위한 모든 준비가 완료되었습니다.
3단계: Google 홈페이지로 이동하기
scraper.py 파일을 열고 Playwright를 임포트한 후 헤드리스 모드에서 Chromium 인스턴스를 초기화하세요:
import asyncio
from playwright.async_api import async_playwright
async def run():
async with async_playwright() as p:
# 새 크로미움 인스턴스 시작
browser = await p.chromium.launch(headless=True) # 개발 중에는 False로 설정
context = await browser.new_context()
page = await context.new_page()
이 코드 조각은 Playwright Page 인스턴스를 생성하여 브라우저 탭을 프로그래밍 방식으로 제어할 수 있게 합니다. headless=True를 설정하면 GUI 없이 백그라운드에서 브라우저를 실행합니다. 개발 중이거나 디버깅을 원할 경우 headless=False로 설정하여 스크립트 실행 과정을 관찰하세요.
async_playwright는 비동기적으로 실행되므로, 스크립트는 Python의 asyncio 모듈을 사용해야 합니다.
주의사항: 새로운 Google AI 개요 기능은 일반적으로 미국에서 먼저 출시됩니다. 보다 정확한 결과를 얻으려면 컴퓨터의 위치를 미국 내 도시로 설정해야 할 수 있습니다. Playwright를 웹 프록시와 통합하여 이를 달성할 수 있습니다. 특히, 저희의 미국 프록시 옵션을 참고하세요.
이제부터는 미국 내에서 작업한다고 가정하겠습니다.
이제 Playwright의 goto() 메서드를 사용하여 Google 홈페이지를 엽니다:
await page.goto("https://google.com/")
스크립트 종료 시 브라우저를 닫아 리소스를 정리하는 것을 항상 기억하세요:
await browser.close()
모든 것을 합치면 다음과 같습니다:
import asyncio
from playwright.async_api import async_playwright
async def run():
async with async_playwright() as p:
# 새로운 Chromium 인스턴스 시작
browser = await p.chromium.launch(headless=True) # 개발 중에는 False로 설정
context = await browser.new_context()
page = await context.new_page()
# Google로 이동
await page.goto("https://google.com/")
# 스크래핑 로직을 여기에 작성...
# 브라우저 닫기 및 리소스 해제
await browser.close()
asyncio.run(run())
훌륭합니다! 이제 Google과 같은 동적 웹사이트를 스크래핑할 준비가 되었습니다.
4단계: 검색 양식 제출하기
브라우저에서 Google 홈페이지로 이동하세요. 검색창을 마우스 오른쪽 버튼으로 클릭하고 “검사”를 선택하여 브라우저의 개발자 도구를 엽니다:

Google의 HTML 구조는 동적으로 생성된 클래스와 속성을 자주 사용합니다. 이는 배포 시마다 변경될 가능성이 높습니다. 따라서 시간이 지남에 따라 선택기가 깨질 수 있어 스크래핑에 신뢰할 수 없습니다.
대신 안정적인 HTML 속성을 타겟팅하세요. 예를 들어, 검색 텍스트 영역에는 명확한 aria-label 속성이 있습니다:
textarea[aria-label="검색"]
fill() 메서드를 사용하여 검색 텍스트 영역을 선택하고 Google 검색 쿼리로 채웁니다:
await page.fill("textarea[aria-label='Search']", search_query)
이 예시에서 search_query 변수는 아래와 같이 정의됩니다:
search_query = "웹 스크래핑이란 무엇인가요?"
질문 형식의 쿼리를 사용하면 Google이 AI 개요 섹션을 생성하도록 유도하는 데 효과적입니다. 해당 섹션이 항상 검색 결과 페이지에 포함되지는 않으므로 이는 중요합니다. 특정 사용 사례에 맞게 검색 쿼리를 자유롭게 조정하세요.
그런 다음 엔터 키 입력을 시뮬레이션하여 검색을 실행합니다:
await page.keyboard.press("Enter")
헤드리스 모드(headless=False)로 스크립트를 실행하고 page.close() 라인에 중단점을 설정하면 다음과 같은 결과를 볼 수 있습니다:

결과 페이지 상단의 “AI 개요” 섹션을 확인하세요. 표시되지 않는다면 질문 형식에 더 가까운 다른 쿼리로 스크립트를 다시 실행해 보세요. 놀랍네요!
5단계: Google AI 개요 섹션 스크래핑
Google의 AI 개요 기능이 어떻게 작동하는지 살펴보면 세 가지 시나리오가 가능함을 알 수 있습니다:
- 캐시된 응답: AI 개요 스니펫이 이미 캐시되어 즉시 표시됩니다.
- 실시간 생성: AI 개요가 동적으로 생성되며, Google이 쿼리를 처리하는 짧은 지연 시간이 발생합니다.
- AI 개요 없음: Google이 AI 개요 섹션을 전혀 표시하지 않습니다.
이 섹션에서는 AI 개요가 즉석에서 생성되는 시나리오 2에 집중해 보겠습니다. 이는 가장 까다로운 경우이며 시나리오 1도 포함합니다.
이를 확인하려면 새로 생성된 질문이나 덜 흔한 질문 형식의 쿼리를 사용해 보세요. 예를 들어:

위에서 보듯이, AI 개요 섹션은 몇 밀리초의 처리 후 나타납니다. 구체적으로, 제목 요소에 “AI 개요” 텍스트가 포함된 경우에만 준비된 것으로 간주할 수 있습니다.
따라서 AI 개요 제목을 포함하는 요소를 검사하세요:

다음 CSS 선택자로 제목을 선택할 수 있습니다:
div[jsname][role="heading"] strong
AI 개요 섹션이 존재하는지 확인하려면 이 요소가 나타나고 올바른 텍스트를 포함할 때까지 기다립니다:
await page.locator(
"div[jsname][role='heading'] strong", has_text="ai overview"
).first.wait_for(timeout=30000)
이는 “ai overview”(대소문자 구분 없음) 텍스트가 페이지에 표시될 때까지 최대 30초(30000밀리초) 동안 대기합니다.
이제 AI 개요 섹션이 로드되었음을 확인했으므로 스크래핑 준비를 하세요. 대부분의 경우 콘텐츠 일부는 처음에 “더 보기” 버튼 뒤에 숨겨져 있습니다:

전체 응답을 스크랩하려면 “더 보기” 버튼이 있는지 확인한 후 클릭하세요:
try:
# 페이지에 존재할 경우 "더 보기" 버튼 클릭
ai_overview_show_more_button = page.locator("div[aria-label='Show more AI Overview']").first
await ai_overview_show_more_button.click()
except PlaywrightTimeoutError:
print("'더 보기' 버튼이 존재하지 않음")
locator() 함수가 지정된 요소를 찾지 못할 때 발생하는 PlaywrightTimeoutError를 반드시 임포트하세요:
from playwright.async_api import TimeoutError as PlaywrightTimeoutError
전체 섹션이 표시되면 HTML 구조를 검사하여 선택 방법을 결정하세요:

알 수 있듯이, AI 개요의 주요 콘텐츠는 다음 CSS 선택기로 선택할 수 있습니다:
div[jsname][data-rl] div
다음 코드를 사용하여 요소를 찾고 HTML을 추출하세요:
ai_overview_element = page.locator("div[jsname][data-rl] div").first
ai_overview_html = await ai_overview_element.evaluate("el => el.outerHTML")
텍스트만 추출하지 않고 HTML을 추출한 이유를 궁금해하신다면 계속 읽어보세요.
자, 이제 Google AI 개요 섹션을 성공적으로 스크래핑했습니다.
6단계: Google AI 개요 HTML을 마크다운으로 변환하기
웹 스크래핑에서 가장 흔한 목표는 요소에서 텍스트를 추출하는 것이지 전체 HTML을 추출하는 것이 아닙니다. 그러나 대부분의 경우 Google AI 개요 섹션 내 AI 생성 콘텐츠는 일반 텍스트가 아닙니다.
대신 글머리 기호, 링크, 소제목, 심지어 이미지까지 포함될 수 있습니다. 해당 콘텐츠를 일반 텍스트로 처리하면 구조와 맥락, 보존해야 할 중요한 정보가 모두 제거됩니다.
따라서 더 나은 접근 방식은 AI 개요를 원시 HTML로 취급한 후 AI 애플리케이션에 이상적인 형식인 마크다운으로 변환하는 것입니다.
HTML을 마크다운으로 변환하려면 활성화된 환경에 Markdownify를 설치하세요:
pip install markdownify
임포트하세요:
from markdownify import markdownify as md
HTML을 Markdown으로 변환하는 데 활용하세요:
ai_overview_markdown = md(ai_overview_html)
훌륭합니다! 이제 스크랩한 AI 개요를 마크다운 파일로 내보내기만 하면 됩니다.
7단계: 스크랩된 데이터 내보내기
파이썬 표준 라이브러리를 사용해 ai_overview.md라는 출력 파일을 열고 변환된 마크다운 내용을 기록합니다:
with open("ai_overview.md", "w", encoding="utf-8") as f:
f.write(ai_overview_markdown)
이로써 Google AI 개요 스크래핑 여정이 끝났습니다!
8단계: 모든 것을 통합하기
현재 scraper.py 파일에는 다음 내용이 포함되어야 합니다:
import asyncio
from playwright.async_api import async_playwright
from playwright.async_api import TimeoutError as PlaywrightTimeoutError
from markdownify import markdownify as md
async def run():
async with async_playwright() as p:
# 새 크로미움 인스턴스 시작
browser = await p.chromium.launch(headless=True) # 개발 중에는 False로 설정
context = await browser.new_context()
page = await context.new_page()
# Google로 이동
await page.goto("https://google.com/")
# 검색 양식 작성
search_query = "웹 스크래핑이란 무엇인가요?" # 관심 있는 검색어로 대체
await page.fill("textarea[aria-label='Search']", search_query)
await page.keyboard.press("Enter")
# AI 개요 섹션이 준비될 때까지 대기
await page.locator(
"div[jsname][role='heading'] strong", has_text="ai overview"
).first.wait_for(timeout=30000)
try:
# 페이지에 존재할 경우 "더 보기" 버튼 클릭
ai_overview_show_more_button = page.locator("div[aria-label='Show more AI Overview']").first
await ai_overview_show_more_button.click()
except PlaywrightTimeoutError:
print("'더 보기' 버튼이 존재하지 않음")
# AI 개요 HTML 추출
ai_overview_element = page.locator("div[jsname][data-rl] div").first
ai_overview_html = await ai_overview_element.evaluate("el => el.outerHTML")
# HTML을 Markdown으로 변환
ai_overview_markdown = md(ai_overview_html)
# 마크다운을 파일로 내보내기
with open("ai_overview.md", "w", encoding="utf-8") as f:
f.write(ai_overview_markdown)
# 브라우저 닫기 및 리소스 해제
await browser.close()
asyncio.run(run())
와! 50줄도 안 되는 코드로 구글 AI 개요 섹션을 스크래핑했네요.
위의 Google AI 개요 스크래퍼를 실행하려면:
python script.py
모든 것이 예상대로 진행되면 프로젝트 폴더에 ai_overview.md 파일이 생성됩니다. 파일을 열면 다음과 같은 내용을 확인할 수 있습니다:
웹 스크래핑은 자동화된 도구(스크레이퍼 또는 봇이라 함)를 사용하여 웹사이트에서 콘텐츠와 데이터를 추출하는 과정입니다. 가시적인 픽셀만 캡처하는 스크린 스크래핑과 달리, 웹 스크래핑은 웹사이트 데이터베이스에 저장된 기본 HTML 코드와 데이터를 더 깊이 파고들어 가져옵니다. 이렇게 추출된 데이터는 가격 비교, 시장 조사, 데이터 분석 등 다양한 목적으로 활용될 수 있습니다.
더 자세한 설명은 다음과 같습니다:
* **자동화된 추출:**
웹 스크래핑은 소프트웨어를 활용해 웹사이트를 자동으로 방문하고, 특정 데이터를 찾아 추출한 후 CSV 파일이나 데이터베이스 같은 구조화된 형식으로 저장하는 과정을 포함합니다.
* **HTML 및 데이터베이스 데이터:**
스크레이퍼는 시각적 콘텐츠만 복사하지 않습니다. 웹사이트의 HTML 코드와 데이터베이스에 저장된 데이터에 접근하여 더 포괄적인 정보를 획득합니다.
* **다양한 활용 사례:**
웹 스크래핑은 가격 비교, 시장 조사, 경쟁사 분석, 리드 생성, 감성 분석 등 다양한 목적으로 활용됩니다.
* **기업뿐만 아니라:**
기업이 데이터 기반 의사 결정을 위해 웹 스크래핑을 자주 사용하지만, 개인이 가격 비교, 시장 동향 파악 또는 일반적인 데이터 분석을 할 때도 유용합니다.
* **윤리적·법적 고려 사항:**
웹 스크래핑 시 웹사이트의 이용 약관과 robots.txt 파일을 반드시 확인하여 정책 위반이나 불법 행위를 저지르지 않도록 주의해야 합니다.
위의 마크다운 콘텐츠를 복사하여 StackEdit 같은 마크다운 뷰어에 붙여넣으세요:

이것이 바로 원시 HTML을 깔끔한 마크다운으로 변환한, 구조화되고 읽기 쉬우며 정보가 풍부한 Google AI 개요 스니펫입니다!
자, 이제 완료되었습니다.
Google AI 개요 스크래핑의 어려움
헤더 모드로 스크립트를 계속 실행하면, 어느 시점에서 다음과 같은 차단 페이지를 마주칠 가능성이 높습니다:

자동화된 요청을 너무 많이 하거나 신뢰도 점수가 낮은 IP 주소를 사용할 경우, Google은 사용자의 활동을 봇으로 감지하고 reCAPTCHA로 대응합니다.
해결책으로 Python에서 CAPTCHA 우회 방법을 시도해 볼 수 있습니다. 단순한 CAPTCHA에는 효과가 있지만, reCAPTCHA v3 같은 고급 또는 최신 버전의 reCAPTCHA에는 종종 실패합니다.
이 경우 프리미엄 CAPTCHA 해결 서비스가 필요할 수 있습니다. 다른 접근법은 Playwright가 Chromium 외 다른 브라우저에서 작동하도록 설정하는 것입니다. 문제는 Playwright가 기본적으로 Chromium(또는 다른 브라우저)을 Google의 봇 방지 시스템에 탐지될 수 있는 방식으로 제어한다는 점입니다.
탐지를 피하려면 Playwright를 AI Agent Browser와 통합할 수 있습니다. 이는 Playwright와 호환되며 에이전트 기반 워크플로우에서 웹 스크래핑 및 데이터 수집에 특화된 클라우드 브라우저입니다.
이 접근법의 장점으로는 거의 무한한 확장성과 CAPTCHA 도전 과제 현저한 감소가 있습니다. CAPTCHA가 발생하더라도 Agent Browser는 CAPTCHA 해결 기능과 프록시 통합 기능을 제공하여 Google AI 개요 스크래핑을 원하는 국가나 언어로 지리적 위치를 지정할 수 있게 합니다.
결론
이 튜토리얼에서는 Google AI 개요가 무엇이며, 여기서 데이터를 스크래핑하는 방법을 배웠습니다. 보셨듯이, 이 데이터를 자동으로 추출하는 간단한 Python 스크립트를 만드는 데는 몇 줄의 코드만 필요합니다.
이 솔루션은 소규모 프로젝트에는 효과적이지만 대규모 스크래핑에는 실용적이지 않습니다. Google은 업계 최고 수준의 반봇 기술을 사용해 CAPTCHA 또는 IP 차단이 발생할 수 있습니다. 또한 이 프로세스를 다수 페이지로 확장하면 인프라 비용이 크게 증가합니다.
AI 워크플로우에 Google SERP 데이터가 필요하다면, Bright Data의 SERP API처럼 AI 활용이 가능한 SERP 데이터를 직접 제공하는 API를 고려해 보세요.
무료 Bright Data 계정을 생성하고 AI 데이터 인프라의 모든 솔루션에 접근하세요!
관련 기사: