이 가이드에서 배우게 될 내용:
- Agno가 무엇이며 에이전트형 워크플로우 구축에 탁월한 선택인 이유.
- 웹 스크래핑이 AI 에이전트에서 중요한 역할을 하는 이유.
- Agno를 내장된 Bright Data 도구와 통합하여 웹 스크래핑 에이전트를 만드는 방법.
자, 시작해 보겠습니다!
Agno란 무엇인가?
Agno는 기억, 지식, 고급 추론을 활용하는 다중 에이전트 시스템을 구축하기 위한 풀스택 Python 프레임워크입니다. 다양한 사용 사례에 적용 가능한 정교한 AI 에이전트 생성을 가능하게 합니다. 단순한 도구 사용 에이전트부터 상태와 결정론을 가진 협업 에이전트 팀에 이르기까지 폭넓게 활용됩니다.
Agno는 모델에 구애받지 않으며, 높은 성능을 자랑하고 추론을 설계의 중심에 둡니다. 다중 모드 입력 및 출력, 복잡한 다중 에이전트 오케스트레이션, 벡터 데이터베이스를 활용한 내장형 에이전트 검색, 완벽한 메모리/세션 처리를 지원합니다.
현재 Agno는 AI 에이전트 구축을 위한 가장 인기 있는 오픈소스 라이브러리 중 하나로, GitHub에서 29,000개 이상의 스타를 자랑합니다:

이러한 급속한 성장은 Agno가 개발자 및 AI 커뮤니티에서 얼마나 빠르게 주목받고 있는지를 보여줍니다.
에이전트 기반 웹 스크래핑이 유용한 이유
기존 웹 스크래핑은 특정 웹 페이지에서 데이터를 추출하기 위해 경직된 데이터 파싱 규칙을 작성하는 방식에 의존합니다. 문제는? 사이트 구조가 자주 변경되기 때문에 스크래핑 로직을 지속적으로 업데이트해야 한다는 점입니다. 이는 높은 유지보수 비용과 취약한 파이프라인으로 이어집니다.
이 때문에 AI 웹 스크래핑이 주목받고 있습니다. 맞춤형 파싱 스크립트를 작성하는 대신, 간단한 프롬프트만으로 AI 모델을 활용해 웹 페이지 HTML에서 직접 데이터를 추출할 수 있습니다. 이 접근법이 매우 인기 있어 최근 다양한 AI 스크래핑 도구가 등장했습니다.
그러나 AI 웹 스크래핑은 에이전트형 AI 아키텍처에 통합될 때 더욱 강력해집니다. 특히 다른 AI 에이전트가 연결할 수 있는 전용 웹 스크래핑 에이전트를 구축할 수 있습니다. 이는 다중 에이전트 워크플로우나 Google의 A2A 같은 AI 프로토콜을 통해 가능합니다.
Agno는 위의 모든 것을 가능하게 합니다. 독립형 AI 스크래핑 에이전트부터 복잡한 다중 에이전트 생태계까지 구축할 수 있습니다. 그러나 일반적인 대규모 언어 모델(LLM)은 능숙한 웹 스크래핑을 위해 설계되지 않았습니다. 강력한 봇 방어 체계를 갖춘 사이트에 연결하지 못하거나, 더 나쁘게는 ‘환각’ 현상을 일으켜 가짜 데이터를 반환할 수 있습니다.
이러한 한계를 해결하기 위해 Agno는 전용 스크래핑 도구를 통해 Bright Data와 기본적으로 통합됩니다. 이 도구들을 사용하면 AI 에이전트가 어떤 웹사이트에서든 신선하고 구조화된 데이터를 스크래핑할 수 있습니다.
차단 및 중단을 방지하기 위해 Bright Data는 TLS 지문 인식, 브라우저 및 기기 지문 인식, CAPTCHA, Cloudflare 보호 등 다양한 문제를 해결합니다. 데이터가 수집되면 원래 작업 지시에 따라 LLM에 입력되어 해석 및 분석됩니다.
차세대 웹 스크래핑을 위해 Bright Data 도구를 Agno 에이전트에 통합하는 방법을 알아보세요!
Agno에서 웹 스크래핑을 위한 Bright Data 도구 통합 방법
이 단계별 섹션에서는 Agno를 사용하여 웹 스크래핑 AI 에이전트를 구축하는 방법을 확인하실 수 있습니다. Bright Data 도구를 통합함으로써 Agno 에이전트가 모든 웹 페이지에서 데이터를 스크래핑할 수 있는 능력을 부여하게 됩니다.
아래 지침을 따라 Agno에서 Bright Data 기반 스크래핑 에이전트를 생성하세요!
필수 조건
이 튜토리얼을 따라하려면 다음이 준비되어 있어야 합니다:
- 로컬에 설치된 Python 3.7 이상 (최신 버전 사용 권장).
- Bright Data API 키.
- 지원되는 LLM 제공업체의 API 키 (여기서는 API를 통해 무료로 사용할 수 있는 Gemini를 사용하지만, 지원되는 다른 LLM 제공업체도 가능합니다).
Bright Data API 키나 Gemini API 키가 아직 없더라도 걱정하지 마세요. 다음 단계에서 생성 방법을 안내해 드리겠습니다.
1단계: 프로젝트 설정
터미널을 열고 Bright Data를 이용한 웹 스크래핑을 수행할 Agno AI 에이전트 프로젝트용 새 디렉터리를 생성하세요:
mkdir agno-web-scraper
agno-web-scraper 폴더에는 스크래핑 Agno 에이전트를 위한 모든 Python 코드가 저장됩니다.
다음으로 프로젝트 디렉터리로 이동하여 가상 환경을 설정합니다:
cd agno-web-scraper
python -m venv venv
이제 선호하는 Python IDE에서 프로젝트를 로드하세요. Python 확장 프로그램이 설치된 Visual Studio Code 또는 PyCharm Community Edition을 권장합니다.
프로젝트 폴더 내에서 scraper.py라는 새 파일을 생성하세요. 디렉터리 구조는 다음과 같아야 합니다:
agno-web-scraper/
├── venv/
└── scraper.py
터미널에서 가상 환경을 활성화하세요. Linux 또는 macOS에서는 다음 명령을 실행합니다:
source venv/bin/activate
Windows에서는 다음 명령을 실행하세요:
venv/Scripts/activate
다음 단계에서는 필요한 Python 패키지 설치 과정을 안내합니다. 활성화된 가상 환경에서 지금 바로 모든 패키지를 설치하려면 다음 명령어를 실행하세요:
pip install agno python-dotenv google-genai requests
참고: 본 튜토리얼은 Gemini를 LLM 제공자로 사용하므로 google-genai를 설치합니다. 다른 LLM을 사용할 계획이라면 해당 제공자에 맞는 라이브러리를 반드시 설치하세요.
이제 모든 준비가 완료되었습니다! Agno와 Bright Data를 사용한 스크래핑 에이전트 워크플로를 구축할 수 있는 Python 개발 환경이 준비되었습니다.
2단계: 환경 변수 읽기 구성
Agno 스크래핑 에이전트는 API 통합을 통해 Bright Data 및 Gemini와 같은 타사 서비스에 연결됩니다. 보안을 유지하려면 Python 코드에 API 키를 직접 하드코딩하지 마십시오. 대신 환경 변수로 저장하세요.
환경 변수 로딩을 쉽게 하려면 python-dotenv 라이브러리를 사용하세요. 가상 환경을 활성화한 상태에서 다음 명령어로 설치합니다:
pip install python-dotenv
다음으로 scraper.py 파일에서 라이브러리를 임포트하고 load_dotenv() 를 호출하여 환경 변수를 로드하세요:
from dotenv import load_dotenv
load_dotenv()
이 함수는 로컬 .env 파일에서 변수를 읽을 수 있게 합니다. 프로젝트 디렉토리 루트에 .env 파일을 생성하세요:
agno-web-scraper/
├── venv/
├── .env # <-----------
└── scraper.py
훌륭합니다! 이제 환경 변수를 사용하여 통합 비밀 정보를 안전하게 처리할 준비가 되었습니다.
3단계: Bright Data 설정
Agno에 통합된 Bright Data 도구를 통해 여러 데이터 수집 솔루션에 접근할 수 있습니다. 이 튜토리얼에서는 스크래핑 전용 제품 두 가지를 통합하는 방법에 집중하겠습니다:
- 웹 언락커 API: 봇 방어 기능을 우회하는 고급 스크래핑 API로, 모든 웹 페이지를 마크다운 형식으로 제공합니다.
- 웹 스크레이퍼 API: LinkedIn, Amazon 등 인기 웹사이트에서 윤리적으로 최신 구조화된 데이터를 추출하기 위한 전용 엔드포인트입니다.
이 도구들을 사용하려면 다음을 수행해야 합니다:
- Bright Data 계정에서 Web Unlocker 솔루션을 설정하세요.
- Web Unlocker 및 Web Scraper API 요청 인증을 위한 Bright Data API 토큰을 획득하세요.
아래 지침을 따라 진행하세요!
먼저, Bright Data 계정이 없다면 무료로 가입하세요. 이미 계정이 있다면 로그인 후 대시보드를 엽니다. 여기서 “프록시 제품 받기” 버튼을 클릭하세요:

“프록시 및 스크래핑 인프라” 페이지로 이동합니다:

이 페이지에서는 이미 구성된 Bright Data 솔루션을 확인할 수 있습니다. 이 예시에서는 Web Unlocker 영역이 활성화되어 있습니다. 해당 영역의 이름은 “unblocker”입니다(나중에 스크립트에 통합할 때 이 이름이 필요합니다).
웹 언락커 존이 아직 없다면, 아래로 스크롤하여 “웹 언락커 API” 카드에서 “존 생성”을 클릭하세요:

존에 이름을 지정하고(예: “unlocker”), 최적의 성능을 위해 고급 기능을 활성화한 후 “추가” 버튼을 누르세요:

새 영역 페이지로 이동합니다. 토글이 “활성” 상태로 설정되어 있는지 확인하세요. 이는 제품 사용 준비가 완료되었음을 의미합니다:

이제 공식 Bright Data 문서를 따라 API 키를 생성하세요. 생성된 키를 다음과 같이 .env 파일에 추가합니다:
BRIGHT_DATA_API_KEY="<YOUR_BRIGHT_DATA_API_KEY>"
<YOUR_BRIGHT_DATA_API_KEY> 자리 표시자를 실제 API 키 값으로 교체하세요.
완벽합니다! 이제 Bright Data 도구를 Agno 에이전트 스크립트에 통합하여 에이전트 기반 웹 스크래핑을 수행할 차례입니다.
4단계: 웹 스크래핑을 위한 Agno Bright Data 도구 통합
프로젝트 폴더에서 가상 환경을 활성화한 상태로 다음 명령어를 실행하여 Agno를 설치하세요:
pip install agno
agno 패키지에는 이미 Bright Data 도구에 대한 내장 지원이 포함되어 있습니다. 따라서 별도의 통합 전용 패키지는 필요하지 않습니다.
추가적으로 필요한 패키지는 Python Requests 라이브러리뿐입니다. Bright Data 도구는 이 라이브러리를 사용하여 앞서 API로 구성한 제품들을 호출합니다. requests 설치 명령어:
pip install requests
scraper.py 파일에서 agno를 통해 Bright Data 스크래핑 도구를 임포트하세요:
from agno.tools.brightdata import BrightDataTools
그런 다음 다음과 같이 도구를 초기화하세요:
bright_data_tools = BrightDataTools(
web_unlocker_zone="unlocker", # 웹 언락커 API 영역 이름으로 대체
search_engine=False,
)
"unlocker" 를 실제 Bright Data 웹 언락커 영역 이름으로 교체하세요.
또한 search_engine은 False로 설정되어 있습니다. 본 예제에서는 SERP API 도구를 사용하지 않고 순수하게 웹 스크래핑에만 집중하기 때문입니다.
팁: 영역 이름을 하드코딩하는 대신 .env 파일에서 불러올 수 있습니다. 이를 위해 .env 파일에 다음 줄을 추가하세요:
BRIGHT_DATA_WEB_UNLOCKER_ZONE="<YOUR_BRIGHT_DATA_WEB_UNLOCKER_ZONE>"
자리 표시자를 실제 Web Unlocker 영역 이름으로 교체하세요. 그러면 BrightDataTools에서 web_unlocker_zone 인수를 제거할 수 있습니다. 클래스가 환경에서 영역 이름을 자동으로 가져옵니다.
참고: Bright Data에 연결하기 위해 BrightDataTools는 BRIGHT_DATA_API_KEY 환경 변수에서 API 키를 찾습니다. 이전 단계에서 .env 파일에 이를 추가한 이유가 바로 이 때문입니다.
대단합니다! Gemini를 통합하여 Agno 웹 스크래핑 에이전트 워크플로우를 강화하세요.
단계 #5: Gemini의 LLM 모델 구성
이제 이 튜토리얼에서 선택한 LLM 제공자 Gemini에 연결할 차례입니다. 먼저 google-genai 패키지를 설치하세요:
pip install google-genai
그런 다음 Agno에서 Gemini 통합 클래스를 임포트하세요:
from agno.models.google import Gemini
이제 LLM 모델을 다음과 같이 초기화합니다:
llm_model = Gemini(id="gemini-2.5-flash")
위 코드 조각에서 gemini-2.5-flash는 에이전트가 사용할 Gemini 모델의 이름입니다. 다른 지원되는 Gemini 모델로 자유롭게 교체할 수 있습니다(단, 일부 모델은 API를 통해 무료로 사용할 수 없다는 점을 유의하세요).
구글-제나이 라이브러리는 내부적으로 Gemini API 키가 GOOGLE_API_KEY 환경 변수에 저장되어 있을 것을 가정합니다. 설정하려면 .env 파일에 다음 줄을 추가하세요:
GOOGLE_API_KEY="<YOUR_GOOGLE_API_KEY>"
<YOUR_GOOGLE_API_KEY> 자리 표시자를 실제 API 키로 대체하세요. 아직 키가 없다면 공식 가이드에 따라 Gemini API 키를 생성하세요.
참고: 다른 LLM 제공업체에 연결하려면 공식 문서에서 설정 지침을 확인하세요.
훌륭합니다! 이제 Agno 스크래핑 에이전트를 구축하는 데 필요한 핵심 구성 요소를 모두 갖추셨습니다.
6단계: 스크래핑 에이전트 정의
scraper.py 파일에서 Agno 스크래핑 에이전트를 다음과 같이 설정하세요:
agent = Agent(
tools=[bright_data_tools],
model=llm_model,
)
이렇게 하면 설정된 LLM을 사용하여 프롬프트를 처리하고 Bright Data 도구를 활용하여 웹 스크래핑을 수행하는 Agno 에이전트 객체가 생성됩니다.
파일 상단에 다음 임포트 문 추가를 잊지 마세요:
from agno.agent import Agent
훌륭합니다! 이제 에이전트에 쿼리를 보내고 스크래핑된 데이터를 내보내기만 하면 됩니다.
7단계: Agno 스크래핑 에이전트에 쿼리 전송
CLI에서 프롬프트를 읽고 Agno 스크래핑 에이전트에 전달하여 실행합니다:
# CLI에서 에이전트 요청 읽기
request = input("Request -> ")
# AI 에이전트에서 작업 실행
response = agent.run(request)
첫 번째 줄은 Python 내장 함수 input() 을 사용해 사용자가 입력한 프롬프트를 읽습니다. 프롬프트에는 에이전트가 처리할 스크래핑 작업이나 질문을 기술해야 합니다. 두 번째 줄은 에이전트에 run()을 호출해 프롬프트를 처리하고 작업을 실행합니다](https://docs.agno.com/agents/run#running-your-agent).
터미널에 응답을 깔끔하게 표시하려면 다음을 사용하세요:
pprint_run_response(response)
Agno에서 이 헬퍼 함수를 다음과 같이 임포트하세요:
from agno.utils.pprint import pprint_run_response
pprint_run_response는 AI 에이전트의 응답을 출력합니다. 하지만 Bright Data 도구가 반환한 원시 스크래핑 데이터도 추출하여 저장하고 싶을 것입니다. 다음 단계에서 이를 처리해 보겠습니다!
단계 #8: 스크랩된 데이터 내보내기
스크래핑 작업을 실행할 때 Agno 웹 스크래핑 에이전트는 백그라운드에서 구성된 Bright Data 도구를 호출합니다. 스크립트가 이러한 도구에서 반환된 원시 데이터도 내보내도록 하면 워크플로우에 큰 가치를 더할 수 있습니다. 그 이유는 해당 데이터를 다른 시나리오(예: 데이터 분석)나 추가적인 에이전트 사용 사례에 재사용할 수 있기 때문입니다.
현재 스크래핑 에이전트는 BrightDataTools에서 다음 두 가지 도구 메서드에 접근할 수 있습니다:
scrape_as_markdown(): 모든 웹 페이지를 스크래핑하여 마크다운 형식으로 콘텐츠를 반환합니다.web_data_feed(): LinkedIn, Amazon, Instagram 등 인기 사이트에서 구조화된 JSON 데이터를 가져옵니다.
따라서 작업에 따라 스크래핑된 데이터 출력은 마크다운 또는 JSON 형식 중 하나가 될 수 있습니다. 두 경우를 모두 처리하려면 도구 결과의 원시 출력을 response.tools[0].result에서 읽으세요. 그런 다음 JSON으로 파싱을 시도합니다. 실패할 경우 스크래핑된 데이터를 마크다운으로 처리합니다.
위의 논리를 다음 코드 줄로 구현하세요:
if (len(response.tools) > 0):
# Bright Data 도구에서 스크랩된 데이터 접근
scraping_data = response.tools[0].result
try:
# 스크랩된 데이터가 JSON 형식인지 확인
parsed_json = json.loads(scraping_data)
output_extension = "json"
except json.JSONDecodeError:
output_extension = "md"
# 스크랩된 데이터를 출력 파일에 기록
with open(f"output.{output_extension}", "w", encoding="utf-8") as file:
file.write(scraping_data)
Python 표준 라이브러리에서 json을 반드시 임포트하세요:
import json
훌륭합니다! 이제 Agno 웹 스크래핑 에이전트 워크플로가 완성되었습니다.
9단계: 모든 것을 통합하기
다음은 scraper.py 파일의 최종 코드입니다:
from dotenv import load_dotenv
from agno.tools.brightdata import BrightDataTools
from agno.models.google import Gemini
from agno.agent import Agent
from agno.utils.pprint import pprint_run_response
import json
# .env 파일에서 환경 변수 불러오기
load_dotenv()
# Agno 통합을 위한 Bright Data 도구 구성
bright_data_tools = BrightDataTools(
web_unlocker_zone="web_unlocker", # 웹 언락커 API 영역 이름으로 대체
search_engine=False, # 본 사용 사례에서는 SERP API 도구가 필요하지 않음
)
# AI 스크래핑 에이전트가 사용할 LLM
llm_model = Gemini(id="gemini-2.5-flash")
# Bright Data 도구를 사용한 Agno 에이전트 정의
agent = Agent(
tools=[bright_data_tools],
model=llm_model,
)
# CLI에서 에이전트 요청 읽기
request = input("요청 -> ")
# AI 에이전트에서 작업 실행
response = agent.run(request)
# 터미널에 에이전트 응답 출력
pprint_run_response(response)
# 스크랩된 데이터 내보내기
if (len(response.tools) > 0):
# Bright Data 도구에서 스크랩된 데이터 접근
scraping_data = response.tools[0].result
try:
# 스크랩된 데이터가 JSON 형식인지 확인
parsed_json = json.loads(scraping_data)
output_extension = "json"
except json.JSONDecodeError:
output_extension = "md"
# 스크랩된 데이터를 출력 파일에 기록
with open(f"output.{output_extension}", "w", encoding="utf-8") as file:
file.write(scraping_data)
50줄 미만의 코드로 어떤 웹 페이지에서든 데이터를 추출할 수 있는 AI 기반 스크래핑 워크플로를 구축했습니다. Bright Data와 Agno를 결합하여 에이전트를 개발할 때 발휘되는 힘입니다!
10단계: Agno 스크래핑 에이전트 실행하기
터미널에서 다음 명령어로 Agno 웹 스크래핑 에이전트를 실행하세요:
python scraper.py
요청을 입력하라는 메시지가 표시됩니다. 다음과 같이 입력해 보세요:
"https://www.reuters.com/sports/formula1/hulkenberg-rids-himself-unwanted-record-239th-attempt-2025-07-06/"에서 짧은 요약문을 제공해 주세요
다음과 유사한 출력이 표시됩니다:

이 출력에는 다음이 포함됩니다:
- 사용자가 입력한 원본 프롬프트.
- 스크래핑에 사용된 Bright Data 도구를 표시하는 로그. 이 경우
scrape_as_markdown()이 호출되었음을 확인합니다. - Gemini가 생성한 마크다운 형식의 요약문(파란색 사각형으로 강조 표시됨).
프로젝트 루트 폴더 내부를 확인하면 output.md라는 새 파일이 생성된 것을 볼 수 있습니다. 이 파일을 마크다운 뷰어로 열면 스크랩된 페이지 콘텐츠의 마크다운 버전을 확인할 수 있습니다:

보시다시피 Bright Data의 마크다운 출력은 원본 웹 페이지의 내용을 정확히 포착합니다:

이제 더 구체적인 요청으로 스크래핑 에이전트를 다시 실행해 보세요:
이 아마존 페이지의 제품 주요 기능을 요약하세요: "https://www.amazon.com/PlayStation%C2%AE5-console-slim-PlayStation-5/dp/B0CL61F39H/"
이번에는 다음과 같은 결과가 나올 수 있습니다:

Gemini 기반 Agno 에이전트가 아마존 제품 페이지의 구조화된 스크래핑에 올바르게 구성된 web_data_feed 도구를 자동으로 선택한 점을 주목하세요.
결과적으로 프로젝트 폴더에 output.json 파일이 생성됩니다. 해당 파일을 열고 내용을 JSON 뷰어에 붙여넣어 확인하세요:

Bright Data 도구가 이 Amazon 페이지에서 구조화된 JSON 데이터를 얼마나 깔끔하게 추출했는지 살펴보세요:

이 두 예시는 에이전트가 이제 사실상 모든 웹 페이지에서 데이터를 가져올 수 있음을 보여줍니다. 이는 강력한 반스크래핑 방어( 악명 높은 아마존 CAPTCHA 등)로 유명한 아마존과 같은 복잡한 사이트에서도 마찬가지입니다.
자, 이제 Bright Data 도구와 Agno로 구동되는 AI 에이전트에서 원활한 웹 스크래핑을 경험하셨습니다.
다음 단계
Agno로 방금 구축한 웹 스크래핑 에이전트는 시작에 불과합니다. 여기서부터 프로젝트를 확장하고 향상시킬 수 있는 여러 방법을 탐색해 보세요:
- 메모리 레이어 통합: Agno의 네이티브 벡터 데이터베이스를 활용해 Bright Data를 통해 에이전트가 수집한 데이터를 저장하세요. 이는 에이전트에 장기 기억 기능을 부여하여 에이전트 기반 RAG(Retrieval-Augmented Generation) 같은 고급 사용 사례의 기반을 마련합니다.
- 사용자 친화적 인터페이스 구축: 간단한 웹 또는 데스크톱 UI를 구축하여 사용자가 에이전트와 자연스러운 대화 방식으로 소통할 수 있게 합니다(ChatGPT나 Gemini와 유사한 방식). 이를 통해 스크래핑 도구의 접근성을 크게 향상시킬 수 있습니다.
- 풍부한 통합 기능 탐색: Agno는 스크래핑을 훨씬 뛰어넘는 에이전트 역량 확장을 위한 다양한 도구와 기능을 제공합니다. 더 많은 데이터 소스 연결, 다양한 LLM 활용, 다단계 에이전트 워크플로 구성 방법에 대한 영감을 얻으려면 Agno 문서를 살펴보세요.
결론
본 문서에서는 Agno를 활용해 웹 스크래핑용 AI 에이전트를 구축하는 방법을 살펴보았습니다. 이는 Agno의 Bright Data 도구와의 내장 통합 덕분에 가능했습니다. 이를 통해 선택한 LLM은 모든 웹사이트에서 데이터를 추출할 수 있는 능력을 갖추게 됩니다.
이것은 단순한 예시일 뿐이라는 점을 명심하세요. 더 고급 에이전트를 개발하려면 실시간 웹 데이터 수집, 검증, 변환을 위한 솔루션이 필요합니다. 바로 Bright Data AI 인프라에서 이를 찾을 수 있습니다.
무료 Bright Data 계정을 생성하고 AI 지원 스크래핑 도구로 실험을 시작해 보세요!