DeepSeek & Crawl4AI로 무료 웹사이트 스크래핑하기

채널 아이콘
aiwithbrandon 구독자 78,200명

요약

본 영상은 웹 스크래핑이 왜 중요한 기술인지, 그리고 이를 무료 도구들로 어떻게 구현할 수 있는지를 상세히 설명합니다. DeepSeek, Crawl4AI, 그리고 Grock라는 세 가지 핵심 도구를 사용하여 실제 웹 데이터를 추출하고 가공하는 과정을 단계별로 안내합니다. 또한, 코드 설정, 환경 구성, CSS 선택자 및 LLM 전략을 통해 데이터를 효과적으로 처리하는 방법과, 최종 결과물을 CSV 및 Google Sheets로 정리하는 방법을 시연합니다.

주요 키워드

웹 스크래핑 DeepSeek Crawl4AI Grock 크롤러 LLM CSS 선택자 API CSV Google Sheets

하이라이트

  • 🔑 무료 웹 스크래핑 도구 DeepSeek, Crawl4AI, Grock의 사용법을 소개하며, 누구나 쉽게 웹 데이터를 추출할 수 있음을 강조합니다.
  • ⚡️ 웹 스크래핑 기술이 AI 개발자와 기업에서 매우 수요 높은 기술임을 설명합니다.
  • 🚀 코드 환경 설정부터 실제 스크래핑 실시까지의 과정을 단계별로 시연하여 실습에 큰 도움을 줍니다.
  • 📌 CSS 선택자와 LLM(대형 언어 모델)을 활용하여 웹페이지에서 필요한 데이터만 정확히 추출하는 방법을 상세히 다룹니다.
  • 🌟 추출한 데이터를 CSV 파일로 저장하고, 이를 Google Sheets와 연동해 클라이언트와 공유하는 방법을 안내합니다.
  • 📚 실시간 데모와 다양한 로그 설명을 통해 코드의 작동 원리와 결과물을 한눈에 이해할 수 있게 합니다.

용어 설명

웹 스크래핑

웹사이트에서 자동으로 데이터를 추출하는 기술을 의미하며, 다양한 산업에서 활용됩니다.

LLM (대형 언어 모델)

자연어 처리를 위한 인공지능 모델로, 복잡한 데이터의 의미를 분석하고 변환하는 역할을 합니다.

Crawl4AI

웹 데이터를 효율적으로 스크랩하고, 필요한 정보를 가공할 수 있도록 돕는 오픈소스 라이브러리입니다.

DeepSeek

웹에서 스크랩한 데이터를 AI 기반의 분석 모델을 통해 의미 있는 정보로 전환하는 도구입니다.

Grock

AI 모델 실행을 위한 클라우드 기반 컴퓨팅 플랫폼으로, 무료 티어를 제공하여 고성능 처리를 지원합니다.

[00:00:00] 소개 및 목적

영상 초반부에서 웹 스크래핑의 중요성과 이 영상을 통해 배울 내용들을 간단히 소개합니다. 무료 도구들을 활용해 데이터를 추출하는 목적을 명확히 전달합니다.

DeepSeek Grok과 Crawl4AI를 사용한 무료 웹 스크래핑 방법 소개. 웹 스크래핑이 현재 기업들이 가장 필요로 하는 핵심 기술 중 하나임을 강조.
무료 소스 코드 제공 안내와 함께 4,000명 이상의 회원이 활동하는 AI 개발자 스쿨 소개. 매주 무료 코칭 콜 진행.
[00:00:43] 도구 개요

Crawl4AI, DeepSeek, Grock의 주요 기능과 장점을 설명합니다. 각 도구가 어떤 역할을 수행하는지와 효율성에 대해 강조합니다.

AI 웹 스크래퍼 구축에 필요한 첫 번째 도구인 Crawl4AI 소개. 웹사이트 스크래핑과 LLM 연동이 가능한 오픈소스 라이브러리.
두 번째와 세 번째 도구인 DeepSeek과 Grok 소개. DeepSeek은 GPT-4와 비슷한 성능을 제공하며 20배 저렴한 비용으로 운영 가능.
Grock을 통해 Deep Seek과 같은 대형 AI 모델을 무료로 빠르게 실행할 수 있는 방법이 소개됩니다.
Deep Seek R1의 특별한 점은 인간과 같은 사고 과정을 보여주며, 초당 275 토큰의 빠른 속도로 처리한다는 것입니다.
[00:03:12] 코드 개요 및 환경 설정

프로젝트 실행을 위한 코드 구조와 환경 설정 방법을 안내합니다. Conda 환경 생성, 의존성 설치, API 키 등록 등의 기본 설정 과정을 설명합니다.

새로 이사온 웨딩 포토그래퍼를 위한 웨딩 베뉴 정보 수집 프로젝트의 시나리오가 소개됩니다.
웹 스크래퍼를 통해 지역의 모든 웨딩 베뉴 정보를 수집하고 이를 엑셀 시트로 정리하는 계획이 설명됩니다.
AI를 활용하여 장소에 대한 상세 설명을 생성하고, 이를 통해 직원이 해당 장소와 더 지적인 대화를 나눌 수 있도록 준비합니다.
데이터를 스크랩하여 CSV로 저장하고 구글 시트로 업로드하여 고객에게 전달하는 프로세스를 구현합니다.
DeepSeek, Grock, Crawl4AI를 활용한 AI 웹 스크래퍼 개발을 시작하며, 복사-붙여넣기만으로도 실행 가능한 간단한 구조로 설계되었습니다.
프로젝트 설정을 위해 conda 환경을 구성하고 필요한 의존성을 설치하며, Grock API 키를 환경 파일에 추가합니다.
크롤러의 기본 구조와 브라우저 설정 등 핵심 구성 요소에 대한 설명을 시작합니다.
브라우저 설정에서는 Chrome 브라우저 사용, 창 크기, headless 모드 등을 지정할 수 있습니다. headless false는 브라우저 동작을 직접 확인할 수 있고, true는 백그라운드 실행을 의미합니다.
[00:07:00] 크롤러 구성 및 CSS 선택자

브라우저 구성, 크롤러 설정 및 CSS 선택자를 통한 특정 웹 요소 데이터 추출 방법에 대해 설명합니다. LLM 전략을 포함한 정교한 스크래핑 기법을 다룹니다.

크롤러 실행 설정에서는 브라우저 설정 이후의 실제 크롤링 동작을 정의합니다. 단순하거나 복잡한 설정이 가능하며, DeepSeek 모델을 사용한 정보 추출도 지원합니다.
페이지 로딩 관련 고급 설정이 가능합니다. JavaScript 요소 로드 대기, 스크린샷 촬영 등 다양한 옵션을 제공하며, 각 기능에 대한 자세한 문서도 제공됩니다.
크롤러 실행 시에는 지정된 URL을 스크래핑하고, 결과를 마크다운 형식으로 저장합니다. 이는 LLM과의 호환성이 좋아 후속 처리에 용이합니다.
[00:09:00] 스크래핑 실행 및 결과 확인

실제 코드를 실행하며 웹페이지 데이터를 추출하는 과정을 시연합니다. 로그와 토큰 사용량 등 실행 과정을 통해 결과물을 확인할 수 있습니다.

Crawl4AI의 기본 개념을 설명하고 코드로 넘어가 웨딩 베뉴 정보를 스크랩하여 엑셀 시트로 저장하는 방법을 소개합니다.
DeepSeek과 Crawl4AI를 연동하여 웨딩 베뉴 잠재 고객 정보를 스크랩하는 방법을 코드와 함께 상세히 설명합니다.
웨딩 베뉴 사이트의 페이지네이션을 활용하여 모든 페이지를 순차적으로 스크랩하는 전략을 설명합니다.
브라우저 설정과 LLM 전략 설정을 통해 스크랩한 정보를 가치 있는 데이터로 변환하는 과정을 설명합니다.
코드베이스의 models 폴더에 venue 파일을 생성하여 웨딩 장소의 이름, 위치 등 사진작가에게 필요한 정보를 수집하는 모델을 구축했습니다.
LLM 추출 전략은 웹사이트에서 수집한 원시 데이터에서 LLM이 웨딩 장소 정보를 추출하고 구조화된 형태로 변환하는 방식으로 작동합니다.
데이터 처리를 위해 Gro의 DeepSeek 모델을 선택했으며, 필요에 따라 Ollama, GPT-4, Mini 모델 등으로 변경 가능합니다.
전체 프로세스는 브라우저 설정, 크롤러 생성, Chrome 브라우저 실행 순으로 진행되며, 이를 통해 웹 스크래핑을 수행합니다.
페이지 함수의 역할은 웨딩 장소를 찾고 더 이상의 결과가 없는지 확인하는 것입니다. 코드의 이해를 돕기 위해 상세한 주석을 추가했습니다.
스크래핑 대상은 기본 URL과 페이지 번호로 구성된 특정 URL입니다. 설정 파일에 핵심 정보가 준비되어 있어 원하는 URL로 변경 가능합니다.
첫 번째 스크래핑 단계에서는 페이지에 결과가 있는지 확인합니다. '결과 없음' 문구가 발견되면 마지막 페이지로 간주하고 프로세스를 종료합니다.
페이지에 정보가 있는 경우, 두 번째 단계로 진행하여 더 자세한 스크래핑을 수행합니다. 이때 추출 전략과 CSS 선택자를 활용하여 웨딩 장소 정보를 추출합니다.
CSS 선택자를 사용하여 웹페이지에서 특정 요소만을 스크래핑하는 방법을 설명합니다. HTML 코드 전체가 아닌 필요한 부분만 효율적으로 추출하는 방법을 소개합니다.
개발자 도구의 검사 모드를 사용하여 웹페이지의 요소를 확인하고, info-container 클래스를 가진 요소들을 식별하는 과정을 설명합니다.
CSS 선택자를 사용해 info-container 클래스를 가진 모든 요소를 스크래핑하고, DeepSeek를 활용하여 베뉴 정보를 추출하는 방법을 설명합니다.
스크래핑된 데이터가 JSON 형식으로 저장되고, 이를 처리하여 베뉴 리스트로 변환하는 과정을 설명합니다.
실제 코드 실행을 위한 준비 과정으로, conda 환경 설정과 터미널 사용법을 안내합니다.
딥시트 크롤러 conda 환경에서 python main.py를 실행하여 웹 스크래핑을 시작합니다. headless 모드가 False로 설정되어 있어 브라우저 창이 열립니다.
설정된 URL의 웨딩 venue 페이지들을 순차적으로 스크래핑하기 시작합니다. 페이지 2, 3등으로 자동으로 이동하면서 데이터를 수집합니다.
verbose 모드가 활성화되어 있어 터미널에서 상세한 로그를 확인할 수 있습니다. 딥시크 API를 통해 웨딩 venue 정보를 추출하고 있습니다.
Stillwater Pond와 같은 구체적인 venue 정보를 수집하며, 위치, 수용 인원, 설명 등 상세 정보를 추출합니다.
스크래핑이 완료되면 사용된 총 토큰 수(43,000개)와 함께 결과 요약이 표시되고, 데이터는 CSV 파일로 저장됩니다.
스크래핑한 데이터를 확인하니 많은 정보가 순식간에 수집되었으며, URL만 바꾸면 다른 웹사이트도 쉽게 스크래핑할 수 있습니다.
[00:21:00] 결과 정리 및 Google Sheets 연동

스크랩한 데이터를 CSV 파일로 저장한 후, Google Sheets로 불러와 표 형식으로 정리하는 방법을 설명합니다. 최종 결과물을 클라이언트와 공유하는 과정을 안내합니다.

구글 시트로 이동하여 CSV 파일을 임포트하는 방법을 설명합니다. 임포트 버튼을 클릭하고 CSV 파일을 드래그 앤 드롭하면 됩니다.
구글 시트에서 데이터가 깔끔한 표로 변환되어, 가격, 수용 인원, 평점, 리뷰 등으로 필터링이 가능하고 AI 생성 설명도 포함되어 있습니다.
안녕하세요, 오늘 영상에서는
DeepSeek Grok과 Crawl4AI를 사용해
무료로 웹사이트를 스크래핑하는 방법을 보여드리겠습니다
수많은 AI 개발자와 기업들과 대화를 나눠본 결과
웹 스크래핑이 기업들이 가장 필요로 하는
핵심 기술 중 하나라고 자신있게 말씀드릴 수 있습니다
이는 기업들이 적극적으로 채용하는
기술 중 하나이기 때문에
오늘 다룰 내용을
놓치지 않으시길 바랍니다
웹 스크래핑 마스터가 되는 것을 돕기 위해
우리는 함께 단계별로
AI 웹 스크래퍼를 만들어볼 것입니다
이런 방식으로 웹사이트를 스크래핑하여
잠재 고객 정보를 수집하고
파일로 저장해서 나중에
이러한 잠재적 기회들을
활용할 수 있도록 하겠습니다
여러분들을 위해
이 영상의 모든 소스 코드를
완전히 무료로 제공해 드리겠습니다
링크는 아래 설명란에 있습니다
이제 더 이상 설명은 그만하고
웹 스크래핑을 시작해보겠습니다. 아, 잠깐만요
AI 프로젝트에 도움이 필요하시거나
같은 생각을 가진 AI 개발자들을 만나고 싶으시다면
제가 만든 무료 AI 개발자 스쿨을
확인해보시는 것을 추천드립니다
현재 4,000명 이상의 멤버가 있고
매주 무료 코칭 콜을 진행하고 있습니다
여러분들의 참여를
환영합니다
자, 이제 다시
영상으로 돌아가겠습니다
AI 웹 스크래퍼를 만드는 데 필요한
세 가지 도구에 대해 빠르게 알아보겠습니다
다음 섹션에서 코딩을 시작하기 전에
먼저 기초를 다지는 시간을 가져보겠습니다
이 모든 것을 실제로
작동하는 것을 보게 될 텐데요
첫 번째 도구는 Crawl4AI입니다
이것은 웹사이트 스크래핑을 매우 쉽게 만들어주는
오픈소스 라이브러리입니다
정말 훌륭한 점은
단순히 웹사이트를 스크래핑하는 것뿐만 아니라
스크래핑한 콘텐츠에
태그를 달고 이를 LLM에 전달하여
다양한 작업을 수행할 수 있다는 것입니다
우리의 경우에는
웹사이트를 스크래핑하여
실제로 잠재 고객 정보를 추출하는 것을
보여드릴 예정입니다
이것을 실제로 보여드리게 되어 매우 기쁩니다
그들은 도구 사용법을 이해하기 쉽도록
많은 예제를 제공하지만
걱정하지 마세요
여러분이 알아야 할 중요한 부분들을
코드 섹션에서
곧 자세히 설명해드리겠습니다
두 번째 도구는 DeepSeek입니다
DeepSeek이 최근 인터넷을
휩쓸고 있는데요
특히 DeepSeek R1 추론 모델을
보여드리게 되어 매우 기쁩니다
주목할 만한 중요한 점들이 있는데
OpenAI의 GPT-4 모델만큼 뛰어난 성능을 보여주며
놀라울 정도로 빠르고 저렴합니다
실행 비용이 약 20배 정도
저렴한데, 이 도구를 실제로
보여드리게 되어 매우 기대됩니다
마지막으로 세 번째 도구는
Grok입니다. Grok은
AI 모델을 실행하기 위한 특수 AI 칩들을
많이 보유하고 있습니다
llama 3나 deep seek 같은 모델을 생각해보세요
이제 grock을 통해서
놀라운 무료 티어를 제공받을 수 있는데
deep seek을 실행할 수 있을 뿐만 아니라
이 거대한 모델을
무료로 매우 빠르게 실행할 수 있습니다
이 예시에서 보시다시피
제가 deep seek R1에 대해 5살 아이에게 설명하듯이
설명해달라고 했고, 왜 모든 사람들이
이것에 대해 열광하는지 물어봤죠
매우 흥미로운 점은
실제로 작동하는 것을 볼 수 있다는 건데
deep seek R1의 특별한 점은 이런 사고
과정이 마치 인간처럼
'그런데 이것도 해야겠네'
'이것도 포함시켜야지'라는 식으로
답변을 생각하면서
최종 답변을 제공한다는 점입니다
보시다시피 grock이 이를 실행하는데
엄청나게 빠른 속도로 처리합니다
초당 275 토큰의 속도로 처리되고
이 모든 정보를 생성하는데
2초도 걸리지 않았죠. 따라서 Grock이
deep seek을 완전 무료로
실행할 때 우리의 영웅이 될 것입니다
이제 이 설명을 마쳤으니
우리가 실제로 만들
코드 개요를 살펴보도록 하겠습니다
전체 프로젝트를
단계별로 함께 코딩해볼 텐데요
함께 시작해보도록 하겠습니다
자, 시작해보죠
이제 코드를 살펴볼 시간인데
코드를 시작하기 전에
예시 시나리오를 설명해드리고 싶습니다
이해하기 쉽도록 말이죠
이번 경우에는 우리가
웨딩 포토그래퍼를 고용했다고 가정해볼게요
그는 새로 이사를 왔고
더 많은 고객을 확보하여
사업을 성장시키고 싶어 합니다
비즈니스를 성장시키려면
어떻게 해야 할까요? 그는
더 많은 웨딩 베뉴에 연락하여
자신의 서비스를 제안하고 싶어 합니다
그래서 우리에게 필요한 것은
일반적인 웨딩 베뉴 웹사이트에서
웨딩 베뉴 정보를 수집하는 것입니다
우리의 경우에는
이렇게 말할 수 있죠
'네, 기꺼이 스크래퍼를 만들어드리겠습니다
당연히 비용을 받고 말이죠'
그리고 이제 우리가 할 일은
그들이 이사 온 지역으로 가서
일반적인 웨딩 베뉴 사이트를 찾아
웹 스크래퍼를 만드는 것입니다
이 스크래퍼는
해당 지역의 모든
웨딩 관련 정보를 수집할 것이고
계속해서 페이지를 넘기면서
모든 정보를 수집할 것입니다
이 정보들을 스크래핑하고
더 이상 새로운 웨딩 베뉴가 없을 때까지
계속 수집할 것입니다. 그리고
훌륭한 엑셀 시트를 만들어서
그들에게 전달할 수 있도록 하고
우리의 최종 목표는
이런 형태의 결과물을 만드는 것입니다
이를 통해 포토그래퍼는
베뉴의 이름과 위치
비용을 알 수 있고
AI를 활용하여
한 문장으로 된 설명도 생성할 것입니다
장소에 대한 설명을 생성하여
직원이 장소에 전화할 때 그들의 업무와
공간에 대해 정확히 알 수 있도록 하고
전화할 때 지적인
대화를 나눌 수 있도록 할 것입니다.
이것이 바로 우리가 구현하고자 하는
코드입니다. 우리는 데이터를 스크랩하고
CSV로 저장한 다음
최종적으로 구글 시트에 업로드하여
고객에게 전달하고 대금을 받을 것입니다.
이것이 바로 우리가 하려는 것이니
지금부터 시작해 보겠습니다.
이제 코드로 넘어가 보겠습니다.
자, 이제 우리가
실제로 손을 더럽히고
AI 웹 스크래퍼 코딩을 시작할 시간입니다.
DeepSeek, Grock, Crawl4AI라는 세 가지 핵심 도구를
사용할 것입니다. 이것들이
이 프로젝트에서 사용할 핵심 도구들입니다.
이 프로젝트를 최대한
간단하게 설정하여 여러분들이
복사하여 붙여넣기만 하면
바로 실행되도록 했습니다.
또한 설정을 쉽게
몇 가지만 수정하면
다른 웹사이트도 즉시
스크랩할 수 있도록 구성했습니다.
이것이 얼마나 쉽게 실행되는지
여러분들이 보시게 될 것이 기대됩니다.
코드로 들어가기 전에
어떻게 설정하면 되는지
보여드리고 싶습니다.
우선 먼저 설치
안내서로 이동하셔서
우리가 하려는 첫 번째 작업은
새로운 환경을 만드는 것입니다.
이 프로젝트를 실행하는 데 필요한
모든 의존성을 설정할 것입니다.
이를 위해 conda를 사용할 것입니다.
conda가 설치되면
환경을 활성화하고
필요한 모든
의존성을 설치할 것입니다.
우리의 경우 실제로
주요한 것은 하나뿐입니다.
Crawl4AI입니다. 이것으로 모든 것을
스크랩할 것이고
그 다음에는
모든 것을 설치한 후
필요한 나머지 정보는
Grock 대시보드로 이동하여
환경 파일에 API 키를
추가하는 것입니다.
프로젝트 설정에 필요한 것은 이게 전부이며
이후에는 바로
실행할 수 있습니다. python main만 실행하면 됩니다.
좋습니다. 이제 개요를 살펴봤으니
크롤러가 어떻게 생겼는지
실제 예시를 보면서
살펴보고, 이 간단한 예시를
확장하여 전체
예시를 살펴보도록 하겠습니다.
그럼 지금부터
간단한 예시를 살펴보겠습니다.
자, 빠르게 예시를 보도록 하겠습니다.
간단한 크롤러의 개요를
설명드리겠습니다. 이를 통해
핵심 구성 요소들을 이해하실 수 있을 것입니다.
웨딩 베뉴 전체를 스크래핑하기 전에
우리가 무엇을 하려고 하는지 살펴보겠습니다.
Crawl4AI 내에는 알아야 할
몇 가지 핵심 구성 요소가 있습니다.
첫 번째는 브라우저 설정입니다.
브라우저 설정은 실제로 어떤 브라우저를
실행할지 설정하는 방법입니다.
브라우저 설정에서 구체적으로
Chrome 브라우저를 열고 싶다고 선택할 수 있고
브라우저 창의 크기를
이만큼 설정하고 싶다고 지정할 수 있습니다
headless를 false로 설정하는데
headless false는 브라우저가
실제로 무엇을 하는지 보고 싶다는 의미입니다
저는 어떤 페이지를
실제로 스크래핑하는지 보는 것을 좋아하지만
백그라운드에서 실행하고 싶다면
headless true로 설정하면 되고
다른 추가 정보들도 설정할 수 있습니다
이것이 브라우저 설정의 핵심이고
그 다음으로 필요한 것은
크롤러 실행 설정을 하는 것입니다
여기 보시다시피
브라우저 설정과 크롤러
설정이 있습니다. 브라우저를 설정한 후에는
크롤링 방식을 선택할 수 있는데
실제로 무엇을 하고 싶은지 정하는 것입니다
여기서 우리는 많은
단순하거나 복잡한 설정을 할 수 있습니다
이 설정 내에서
몇 가지 핵심적인 것들을 선택할 수 있습니다
웹사이트를 크롤링할 때
이것이 LLM용으로 만들어졌기 때문에
여러 가지를 선택할 수 있습니다
DeepSeek 모델을 사용해서 정보를 추출하고
이 정보를 가져오고 싶다고 설정할 수 있죠
실제 작동하는 것을 곧 보실 텐데
저는 먼저
몇 가지 시드를 심어두고
페이지 로딩과 관련된
다양한 옵션들을 설정할 수 있습니다
예를 들어, 페이지가 복잡하고
정보가 바로 렌더링되지 않는다면
JavaScript 코드를 전달해서
'이 JavaScript 요소가 로드될 때까지
웹사이트를 스크래핑하지 말아주세요'라고
설정할 수 있습니다. 또는
스크린샷을 찍고 싶다고 할 수도 있고
여기서 할 수 있는 멋진 것들이
많이 있습니다
저는 일단
어떤 것들이 가능한지 보여드리고
코드에서 곧 보시겠지만
이것들 각각에 대한 링크가 있습니다
코딩할 때
문서로 돌아가서 볼 수 있는
링크가 있어서 '아 그래, 이게
내가 사용할 수 있는 모든 옵션이구나' 하고
확인할 수 있습니다
여러분이 이걸 보실 수 있어서 기쁩니다
자, 다음은 무엇을 할까요?
브라우저가 실행되도록 설정하고
실행 설정을 지정했으니
이제 실제로 크롤러를 실행할 수 있습니다
우리의 경우에는
'자, 이제 웹사이트를
스크래핑하고 싶은데, 이 브라우저를 열고
이렇게 해주세요'라고 지정합니다
이 URL을 스크래핑하고
스크래핑할 때 이 URL에서
이 실행 설정을 사용해 주세요
그러면 이것이
실제로 웹사이트를 스크래핑하고
전체 웹사이트를 스크래핑해서
그 웹사이트의 결과를
마크다운 파일로 깔끔하게 정리해줍니다
LLM들은 마크다운을 좋아하죠
그래서 이 결과를 저장하고
나중에 다른 작업을 위해
다른 LLM에 전달하기 좋은 방법입니다
이것이 Crawl4AI의 핵심입니다
이것이 Crawl4AI의 핵심입니다. 이제
준비가 되었으니
실제 코드로 넘어가서
어떻게 이 예제를 활용하고
확장하여 웨딩 베뉴 정보를
전체적으로 스크랩하고
필요한 모든 정보를 수집하여
깔끔한 엑셀 시트로
저장하는 방법을 보여드리겠습니다.
여기에 DeepSeek R1을 어떻게
추가할지 살펴보겠습니다.
자, 이제 코드를 살펴보겠습니다.
이제 재미있는 부분이 시작됩니다.
코드를 함께 살펴보면서
한 줄씩 자세히 이해해보겠습니다.
정확히 어떻게
DeepSeek과 Crawl4AI를 연동하여
웨딩 베뉴에 대한
잠재 고객 정보를 스크랩할 수 있는지
알아보겠습니다.
지금까지 배운 내용을
적용해보도록 하겠습니다.
현재 코드에서는 실제로
하나의 주요 기능만 있는데,
그것은 모든 베뉴를 크롤링하는 것입니다.
내부적으로 어떻게 작동하는지
큰 그림에서 살펴보고,
우리의 최종 목표와 연결해보겠습니다.
궁극적으로 우리는
이 웨딩 베뉴 사이트 전체를 크롤링하여
특정 도시의 모든 잠재 고객 정보를
수집하려고 합니다.
큰 그림에서 보면,
이제 단계별로 살펴볼 텐데,
우리는 계속해서 각 페이지를 스크랩하고
더 이상 스크랩할 페이지가 없을 때까지
계속 진행할 것입니다.
지금은 1페이지에 있고
결국 10페이지까지 가면
더 이상의 결과를
찾을 수 없게 될 것입니다.
목표는 더 이상 스크랩할 수 없을 때까지
계속 스크랩하는 것입니다.
이제 이것을 실제로 구현하기 위해
무엇을 설정해야 하는지
살펴보겠습니다. 큰 그림에서 보면
크롤러 설정을 시작하여
각 페이지를 스크랩하도록
해야 합니다.
빠르게 살펴보겠습니다.
먼저 이전 예제에서
브라우저 설정을 해야 합니다.
크롬 브라우저를 설정하여
창을 띄우고 페이지를 스크랩하면서
진행 상황을 모두 확인하고 싶습니다.
페이지를 스크랩하는 동안
모든 로그를 보고 싶습니다.
이해되시죠?
이제 새로운 부분을
살펴보겠습니다.
의미를 설명해드리고 싶은데,
LLM 전략을 설정해야 합니다.
이는 어떻게 스크랩하고
LLM을 사용하여 스크랩한 정보를
가치 있는 정보로 변환할지를 의미합니다.
우리의 경우
각각의 웨딩 베뉴를
스크랩하려고 합니다.
웨딩 베뉴 모델을 스크랩하고
다음 모델로 넘어가서
계속해서 다음 모델을
스크랩하면서
더 이상 스크랩할 것이 없을 때까지
진행할 것입니다.
말씀드렸던 것처럼 venue 모델이 있는데요,
우리가 코드베이스 내에
모델을 만든 것을 확인할 수 있습니다.
models 폴더 안에 venue 파일이 있고
각 venue에 대해 우리가 하려는 것은
이름과 위치, 그리고
사진작가에게 전달하는데 필요한
다른 정보들을 수집하는 것입니다.
자, 이제 우리가
어떤 정보를 수집하려 하는지
설명했는데, LLM 추출 전략이
무엇인지 설명드리겠습니다.
제가 생각하는 방식은
웹사이트를 스크래핑하면서
많은 원시 데이터를 받게 되는데
LLM에게 이 데이터를 보고
처리하도록 설정하는 것입니다.
우리의 경우에는
LLM에게 모든 웨딩 venue를
원시 데이터에서 추출하고
다양한 정보를 가져오라고
지시할 것입니다.
이름, 위치, 가격 등의 정보와
원시 데이터를 수집하고
한 문장으로 된 설명을 생성하게 됩니다.
여기서 주목할 점은 이 정보가
우리의 venue 모델과 직접 연결된다는 것입니다.
일대일 관계로,
LLM에게 필요한 작업을 지시하고
우리가 원하는 최종 모델을
생성하게 됩니다.
자, 이제 지시사항과 스키마에 대해
이해가 되셨길 바랍니다. 이제는
실제로 이 처리를 수행할
LLM 모델을 선택해야 하는데
여기서 Gro와 DeepSeek가 등장합니다.
우리는 Gro를 사용할 것이고
특히 Gro에서 제공하는
DeepSeek 모델을 사용해서
이 지시사항을 수행하고 모든 것을
venue 스키마로 변환할 것입니다.
참고로 말씀드리면
이를 변경할 수도 있는데
다른 무료 모델을 원한다면
강력한 컴퓨터가 있을 경우 Ollama를 사용해
로컬에서 Llama 3.1을 실행하거나
유료 모델을 선호한다면
쉽게 GPT-4나
4.0 Mini 등으로 변경할 수 있습니다.
또는 최근에 출시된 0.3 Mini도 가능합니다.
이해가 되셨죠?
자, 빠르게 정리해보면
브라우저를 설정하고
스크래핑을 하면서
LLM에게 정확히
어떤 정보를 스크래핑하고
추출해서 venue 객체를
만들어야 하는지 알려줍니다.
이제 재미있는 부분인
실제 구현으로 넘어가보죠.
기본 설정이 완료되었으니
스크래핑을 시작해보겠습니다.
과정을 살펴보면
먼저 하나의 크롤러를 생성합니다.
이 크롤러는
실제로 여러
웹페이지를 크롤링하면서
작업을 수행할 것이고
Chrome 브라우저를 열어서
스크래핑을 위한
기본 설정을 하게 됩니다.
크롤러가 생성되면
핵심 Fetch and process로 들어갑니다.
페이지 함수는 단순히
웨딩 장소를 찾고
더 이상 결과가 없는지 확인하는 것이 전부입니다.
자, 이제 이것들이
어떻게 연결되는지 자세히 살펴보겠습니다.
최대한 많은 주석을 달아놓았는데,
이는 여러분이
코드 내에서 데이터가
어떻게 움직이는지 정확히 이해할 수 있도록 하기 위해서입니다.
따라서 여러분이 직접
웹 스크래퍼를 만들 때
이 코드를 복사하고 수정하면 됩니다.
한 줄씩 살펴보겠습니다.
우리가 하려는 것은
스크래핑인데, 구체적으로
특정 URL을 스크래핑하려고 합니다.
URL은 기본 URL과
스크래핑하고 싶은
페이지 번호로 구성되어 있습니다.
우리의 경우에는 핵심 정보가 담긴
설정 파일이 준비되어 있습니다.
이 기본 URL을 스크래핑하겠다고
지정하면 되는데, 원하는 다른 URL로
변경할 수도 있습니다.
웨딩 장소를 스크래핑하고
1페이지부터 시작할 것입니다.
먼저 할 일은
실제로 확인해보는 것입니다.
페이지를 스크래핑하고
결과가 없는지 확인할 건데요,
보여드리겠습니다.
크롤러와 URL을 전달하고
'크롤러야, 이 페이지를 스크래핑해줘'라고
요청할 것입니다.
페이지를 스크래핑할 때
캐시는 저장하지 말고 바로
스크래핑만 하도록 할 것입니다.
페이지 어디에서든 '결과 없음'이라는 단어가
있는지 확인하는 것이 전부입니다.
페이지를 스크래핑하고 결과를 확인해서
모든 것이 성공적으로 반환되었다면
'결과 없음'이 있는지 확인합니다.
만약 있다면 우리가 마지막 페이지에
있다는 의미입니다. 예를 들어 10페이지라면
아주 마지막 페이지이고
더 이상 스크래핑할 것이 없다는 뜻이죠.
이해되셨길 바랍니다.
자, 이제 결과를 찾지 못했다면
true를 반환할 것이고
이는 여기서 일찍 종료할 수
있다는 의미입니다. 결과가 없으니
반환하고 일찍 종료하는 거죠.
이는 코드를 깔끔하게 유지하는
좋은 방법입니다. 단순한 조기 반환문이죠.
이게 전부입니다.
이제 페이지에 정보가 있고
'결과 없음' 페이지가 아니라면
실제로 페이지를
스크래핑할 수 있습니다. 하지만 이번에는
좀 더 자세한 스크래핑을 할 건데
이제부터
실제로 모든 웨딩
장소를 페이지에서 추출하기 시작할 것입니다.
작동 방식은 이렇습니다.
페이지를 다시 크롤링하되
이번에는 다르게 할 것입니다.
같은 페이지이지만
스크래핑 방식이
조금 다릅니다. 이번에는
두 가지 정보를
추가할 것입니다.
추출 전략과 CSS
선택자입니다. 설명해드리겠습니다.
무슨 일이 일어나고 있는지 설명해드리겠습니다.
CSS 선택자에 대해 말씀드리면, 이것은
수천 줄의 HTML 코드를 스크래핑하는 대신
웹 페이지에서 특정 요소만
처리하도록 지정하는 것입니다.
우리의 경우에는 구체적으로 살펴보면서
어떤 요소를 스크래핑할지 알아보겠습니다.
화면을 좀 더 크게 만들어보겠습니다.
우리 웹사이트 내에서
검사 모드로 들어가서 이 작은 커서를 클릭하면
요소들 위에 마우스를 올릴 수 있습니다.
이렇게 마우스를 올리면
이러한 요소들이 보이고
클릭하면 이 요소에 적용된
모든 클래스와 스타일을 볼 수 있습니다.
제가 스크래핑하고 싶은 특정 요소죠.
처음에 말씀드렸듯이
제가 하고 싶은 것은
더 구체적으로 말하면
이 정보들만 스크래핑하고 싶습니다.
이 정보와 그 다음 정보들을 말이죠.
어떻게 스크래핑할 수 있을까요?
여기 코드를 보면 각각의
웹페이지에서 마우스를 올리면
info-container라는 클래스가 있는 것을 볼 수 있습니다.
저는 이 웨딩 베뉴 사이트에서
모든 info-container만 스크래핑하고 싶습니다.
그리고 그게 바로 우리가 하고 있는 일입니다.
CSS 선택자로 돌아가보면
info-container라는 단어가 포함된
모든 클래스를 스크래핑하도록 지정했습니다.
이게 셋업을 위해 필요한 전부입니다.
이제 전체 웹사이트를 스크래핑하는 대신
모든 info-container만 가져오도록 했습니다.
이제 info-container를 보면서
우리가 앞서 설정한
LM 전략을 사용하여
DeepSeek를 사용해
모든 베뉴 정보를 스크래핑하도록 했습니다.
이제 모든 것이 어떻게 연결되는지
이해하실 수 있을 것입니다.
일반 스크래핑과 AI 스크래핑을
어떻게 결합하는지 보실 수 있죠.
이제 다음 단계로
웹사이트를 스크래핑한 후
추출된 콘텐츠의 결과를 확인해보겠습니다.
이제 웹사이트를 스크래핑했으니
추출된 콘텐츠의 결과를 볼 수 있습니다.
이것은 JSON 문자열이 될 것이고
모든 추출된 베뉴 정보가 포함될 것입니다.
그 다음에는 JSON 문자열을 로드하여
추출된 데이터를 얻게 됩니다.
이 추출된 데이터는
여기 있는 모델들의 모음입니다.
베뉴들의 리스트가 되는 거죠.
제가 볼 때는 꽤 멋진 것 같네요.
이게 전체 코드의 핵심 내용입니다.
이제 코드를 실행해서
정확히 어떤 일이 일어나는지
보여드리고 싶습니다.
그리고 진행되는 동안
설명을 해드리겠습니다.
방금 설명한 코드가 어떻게 작동하는지
이해하실 수 있도록요.
코드를 실행하면서
방금 설명한 모든 내용이
이해가 되도록 하겠습니다.
코드를 실행하기 시작하겠습니다.
진행되는 동안 설명해드리겠습니다.
먼저 해야 할 일은
터미널을 열고 conda 환경에
있는지 확인하는 것입니다.
제 환경을 보시면
딥시트 크롤러라고 표시되어 있네요.
이것은 우리가 이전에 만든 conda 환경입니다.
이제 python main.py를 실행할 수 있습니다.
이렇게 하면 우리의 코드가 실행되기 시작할 거예요.
실행하면 브라우저 창이 열릴 텐데,
headless를 False로 설정했기 때문이죠.
브라우저가 열리면서 스크래핑이 시작됩니다.
이제 URL에 설정해 둔
모든 웨딩 venue 페이지들을 스크래핑하기 시작할 거예요.
설정된 모든 venue 페이지를 스크래핑할 겁니다.
스크래핑하려는 URL 내의 모든 페이지를요.
화면을 축소해서 보여드리겠습니다.
정확히 어떤 일이 일어나는지 보실 수 있도록요.
페이지를 스크래핑하면서
여기서 보시면 2페이지로 이동하고
2페이지 스크래핑이 끝나면
3페이지로 이동하고
이런 식으로 계속 진행됩니다.
그리고 이 과정에서
터미널에서 보시면 verbose를 true로
설정했기 때문에
많은 로그들을 확인할 수 있습니다.
웹사이트를 스크래핑하면서
딥시크로 많은 API 호출을 하고 있죠.
특히 Grok에게 딥시크 모델을 실행해서
이 데이터에서 웨딩 venue를 찾아달라고
요청하고 있습니다.
그리고 진행 과정에서
다양한 로그들이 표시되는데
예를 들어 3페이지에서는
10개의 리드를 스크래핑했다는 것을 볼 수 있죠.
이런 식으로 계속 진행됩니다.
3페이지에서는 28개의 리드를 얻었고
이제 4페이지로 넘어갔네요.
진행되는 과정을 보면
흥미로운 점은 우리가 설정한 대로
정확히 작동하고 있다는 겁니다.
웨딩 venue를 처리하면서
venue의 이름이 Stillwater Pond이고
조지아 주 템플에 있는, 아마도 애틀랜타 근처일 거예요.
수용 인원과 설명도 확인할 수 있습니다.
여기 있는 정보를 기반으로요.
이렇게 계속 스크래핑이 진행됩니다.
좋은 점은
거의 끝나가고 있다는 거예요.
총 6페이지밖에 없는 것 같네요.
완료되면 '끝났다'는 메시지가 표시될 거예요.
더 이상 스크래핑할 것이 없다고 하면서
깔끔한 최종 요약을 보여줄 겁니다.
'스크래핑이 완료됐다'는 메시지와 함께
스크래핑이 끝나고
간단한 개요를 보여줄 텐데
모든 것을 스크래핑하는 데 사용된
토큰의 수를 알려줄 거예요.
그리고 모든 것을 CSV 파일로 저장했다고도 알려줍니다.
이제 마지막 페이지네요.
맨 아래로 스크롤하면
6페이지이고 더 이상 없는 것을 볼 수 있어요.
곧 종료될 거예요.
마지막 데이터를 추출했고
브라우저가 닫혔네요.
스크래핑과 크롤링이 모두 완료됐기 때문입니다.
이제 결과를 보여줄 텐데요.
사용한 모든 토큰 수를 보여줄 거예요.
총 43,000개의 토큰을 사용했네요.
이는 제한 범위 내에 있습니다.
Grok에서는 분당 약 60,000토큰까지 사용할 수 있거든요.
그리고 페이지별로 스크래핑한 내용도 확인할 수 있습니다.
상당히 많은 데이터를 수집했네요.
실제로 많은 양을 스크래핑했고
이제 다음으로
완성된 venue 데이터를 살펴보도록 하겠습니다.
시트를 보시면 정말 많은 정보를 수집했다는 걸 알 수 있습니다.
순식간에 이렇게 많은 정보를 얻었고
URL만 바꾸면 쉽게
다른 웹사이트도 스크래핑할 수 있죠.
전반적으로 필요한 모든 데이터를
스크래핑했고
이제 이 데이터를
구글 시트로 옮기기만 하면 됩니다.
지금부터 보여드릴 것은
구글 시트에서
깔끔한 표를 만드는 방법입니다.
새로운 CSV 데이터로
작업을 완료하면 끝이 납니다.
자, 이제 구글 시트로 이동했는데요.
여기서 우리가 코드로 만든
CSV 파일을 가져와서
실제로 임포트할 겁니다.
방금 코드에서 만든 파일을 가져올 건데
구글 시트에서 해야 할 일은
임포트 버튼을
클릭하는 것뿐입니다.
임포트를 클릭하면
업로드할 파일을 선택하라고 나오는데
CSV 파일을 끌어다 놓으면 됩니다.
스크래핑한 많은 정보가 들어있는
CSV를 임포트하면
모든 작업이 끝납니다.
데이터가 깔끔하게 정리되고
이제 시트에서는
방금 스크래핑한 모든 정보를 보여줍니다.
좋은 점은 구글 시트가
이것을 표로 변환하겠다고 제안한다는 거죠.
그러면 아주 보기 좋은 표가 완성됩니다.
이제 이걸 바로 클라이언트와 공유할 수 있고
클라이언트가 들어와서 볼 수 있죠.
이제 가격, 수용 인원, 평점, 리뷰로
필터링도 할 수 있습니다.
게다가 AI가 생성한
웨딩 베뉴에 대한 간단한 설명도
포함되어 있어서
장소의 특징과 모습을 알 수 있습니다.
전반적으로 정말 멋진 결과네요.
이 도구가 얼마나 강력한지 아시겠죠?
여러분들이
자신의 클라이언트를 위해 웹사이트를
스크래핑하실 때 이 AI 웹 스크래퍼와
DeepSeek Gro, Crawl4AI를 사용하실 수 있을 겁니다.
이것으로 이번 영상을 마치겠습니다.
AI 웹 스크래퍼 만드는 법을
배우는 걸 즐기셨길 바랍니다.
여러분이 앞으로 만드실
것들이 정말 기대되네요.
마지막으로 알려드릴 것이
이 영상의 모든 소스 코드는
아래 설명란에 무료로 제공됩니다.
그리고 비슷한 생각을 가진 AI 개발자들과
소통하고 싶으시다면
무료 스쿨 커뮤니티를 이용하세요.
자세한 내용은 역시
설명란에 있습니다.
이 채널에는 다른 AI 관련
콘텐츠도 많이 있어요.
LangChain 등 다양한 내용이 있으니
다음에 추천되는 영상을
꼭 확인해 보세요.
다음 영상에서 만날 때까지
여러분 모두 좋은 하루 보내세요. 안녕히 계세요!