LLaMA 3를 활용한 웹 스크래핑: 모든 웹사이트를 구조화된 JSON으로 변환하기 (2026 가이드)

LLaMA 3를 사용하여 대용량 HTML을 구조화된 JSON으로 변환하고 일반적인 스크래핑 장애물을 건너뛰세요.
6 분 읽기
Web scraping with Llama blog image

기존 웹 스크래핑 방식은 웹사이트 레이아웃 변경이나 봇 방지 기능 강화 시 작동이 중단되는 경우가 많습니다. 본 가이드에서는 메타의 강력한 오픈 소스 언어 모델인 LLaMA 3를활용한 AI 기반 접근법을 통해 거의 모든 웹사이트에서 구조화된 데이터를 추출하고 이를 깔끔하고 활용 가능한 JSON으로 변환하는 방법을 배울 수 있습니다.

시작해 보겠습니다.

웹 스크래핑에 LLaMA 3를 사용해야 하는 이유

LLaMA 3 (2024년 4월 출시)는 메타의 오픈 소스 대규모 언어 모델로, 80억에서 4050억 매개변수 규모로 제공됩니다. 다양한 사용 사례와 하드웨어 용량을 지원합니다. 후속 버전인 LLaMA 3.1, 3.2, 3.3은 성능과 문맥 이해력을 크게 향상시켰습니다.

기존 웹 스크래핑 방식은 XPath나 CSS 같은 정적 선택기에 의존하는데, 웹사이트 구조가 변경되면 쉽게 작동하지 않을 수 있습니다. 반면 LLaMA 3은 인간처럼 콘텐츠를 문맥적으로 이해함으로써 지능적인 데이터 추출을 가능하게 합니다.

이로 인해 다음과 같은 분야에 이상적입니다:

  • 아마존과 같은 전자상거래 사이트
  • 데이터 파싱
  • 웹사이트 업데이트마다 중단되지 않는 더 탄력적인 스크레이퍼 생성
  • 스크래핑된 데이터를 자체 환경 내에 보관(민감 정보 관리에 필수)

웹 스크래핑에 AI를 활용하는 방법에 대해 자세히 알아보세요.

선행 조건

LLM 웹 스크래핑을 시작하기 전에 다음 사항을 준비하세요:

  • Python 3 설치 완료
  • 기본적인 Python 지식 (전문가가 될 필요는 없음)
  • 호환 가능한 운영 체제: – macOS (macOS 11 Big Sur 이상 필요) – Linux – Windows (Windows 10 이상 필요)
  • 충분한 하드웨어 리소스 (아래 모델 선택 세부사항 참조)

Ollama 설치

Ollama는 로컬에서 대규모 언어 모델의 다운로드, 설정 및 실행을 간소화하는 경량 도구입니다.

ollama-llm-download-installation-page

시작하려면:

  1. Ollama 공식 웹사이트 방문
  2. 사용 중인 운영 체제에 맞는 애플리케이션을 다운로드하여 설치하세요
  3. 중요: 설치 중 Ollama가 터미널 명령어 실행을 요청할 수 있지만,아직 실행하지 마세요. 먼저 적합한 모델 버전을 선택할 것입니다.

LLaMA 모델 선택하기

Ollama의 모델 라이브러리를 살펴보고 하드웨어 및 사용 사례에 가장 적합한 LLaMA 버전을 선택하세요.

대부분의 사용자에게 llama3.1:8b는 성능과 효율성 사이에서 최적의 균형을 제공합니다. 가볍고 성능이 우수하며 약 4.9GB의 디스크 공간과 6~8GB의 RAM이 필요합니다. 대부분의 최신 노트북에서 원활하게 실행됩니다.

더 강력한 기기를 사용 중이며 더 높은 추론 능력이나 확장된 컨텍스트 길이가 필요하다면 70B나 405B 같은 더 큰 모델로 확장하는 것을 고려하세요. 이 모델들은 훨씬 더 많은 메모리와 컴퓨팅 성능을 필요로 합니다.

모델 가져오기 및 실행

LLaMA 3.1 (8B) 모델을 다운로드하고 초기화하려면 다음 명령어를 실행하세요:

ollama run llama3.1:8b

모델 다운로드가 완료되면 간단한 대화형 프롬프트가 표시됩니다:

>>> 메시지 보내기 (도움말은 /?)

간단한 질문으로 모델을 테스트해 볼 수 있습니다:

>>> 당신은 누구인가요?
저는 LLaMA입니다, *Meta AI에서 개발한 AI 어시스턴트입니다...*

위와 같은 성공적인 응답은 모델이 제대로 설치되었음을 확인해 줍니다. 프롬프트를 종료하려면 /bye를 입력하세요.

다음으로 Ollama 서버를 실행하려면 다음 명령어를 실행하세요:

ollama serve

이 명령어는 http://127.0.0.1:11434/에서 로컬 Ollama 인스턴스를 실행합니다. 서버가 백그라운드에서 계속 실행되어야 하므로 이 터미널 창은 열어 두세요.

작동 여부를 확인하려면 브라우저를 열고 해당 URL로 이동하세요. “Ollama is running” 메시지가 표시되어야 합니다 .

LLM 기반 아마존 스크레이퍼 구축

이 섹션에서는 아마존에서 제품 정보를 추출하는 스크레이퍼를 구축합니다. 아마존은 동적 콘텐츠와 강력한 봇 방지 기능으로 인해 가장 까다로운 대상 중 하나입니다.

amazon-office-chair-product-page

다음과 같은 주요 세부 정보를 추출할 것입니다:

  • 제품 제목
  • 현재/원가
  • 할인
  • 평점 및 리뷰
  • 설명 및 특징
  • 재고 상태 및 ASIN

AI 기반 다단계 워크플로

기존 스크래핑의 한계, 특히 아마존과 같은 복잡한 전자상거래 사이트에서의 한계를 극복하기 위해, LLaMA 기반 스크래퍼는 스마트한 다단계 워크플로를 따릅니다:

  1. 브라우저 자동화 – Selenium을 사용하여 페이지를 로드하고 동적 콘텐츠를 렌더링
  2. HTML 추출 – 제품 세부 정보를 포함하는 컨테이너를 식별 및 추출
  3. 마크다운 변환 – HTML을 마크다운으로 변환하여 토큰 수를 줄이고 LLM 효율성 향상
  4. LLM 처리 – LLaMA와 함께 구조화된 프롬프트를 사용하여 깔끔하고 구조화된 JSON 추출
  5. 출력 처리 – 추출된 JSON을 저장하여 후속 작업 또는 분석에 활용

워크플로우의 시각적 분해는 다음과 같습니다:

이제 단계별로 과정을 살펴보겠습니다. 이 예시는 단순성과 대중성을 고려해 Python을 사용하지만, JavaScript나 다른 언어로도 유사한 결과를 얻을 수 있습니다.

1단계 – 필수 라이브러리 설치

먼저 필요한 Python 라이브러리를 설치합니다:

pip install requests selenium webdriver-manager markdownify
  • requests – LLM 서비스에 API 호출을 보내는 최고의 Python HTTP 클라이언트
  • selenium – 브라우저 자동화 도구로, 자바스크립트 중심 웹사이트에 이상적입니다
  • webdriver-manager – 올바른 ChromeDriver 버전을 자동으로 다운로드하고 관리합니다
  • markdownify – HTML을 마크다운으로 변환합니다

2단계 – 헤드리스 브라우저 초기화

Selenium을 사용하여 헤드리스 브라우저 설정:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager

options = Options()
options.add_argument("--headless")

driver = webdriver.Chrome(
    service=Service(ChromeDriverManager().install()),
    options=options
)

3단계 – 제품 HTML 추출

아마존 제품 상세 정보는 동적으로 렌더링되며 <div id="ppd"> 컨테이너 안에 포함됩니다. 이 섹션이 로드될 때까지 기다린 후 HTML을 추출합니다:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

wait = WebDriverWait(driver, 15)
product_container = wait.until(
    EC.presence_of_element_located((By.ID, "ppd")))


# 제품 컨테이너의 전체 HTML 추출
page_html = product_container.get_attribute("outerHTML")

이 접근 방식:

  • 자바스크립트로 렌더링된 콘텐츠(가격, 평점 등)를 기다림
  • 헤더, 푸터, 사이드바를 무시하고 관련 제품 섹션만 대상으로 함

Python으로 아마존 제품 데이터를 스크래핑하는 방법에 대한 완전한 가이드를 확인해 보세요.

4단계 – HTML을 마크다운으로 변환

아마존 페이지에는 LLM이 처리하기 비효율적인 깊게 중첩된 HTML이 포함됩니다. 핵심 최적화 방법은 이 HTML을 깔끔한 마크다운으로 변환하는 것으로, 토큰 수를 획기적으로 줄이고 이해도를 높입니다.

전체 스크립트를 실행하면 amazon_page.html과 amazon_page.md 두 파일이 생성됩니다. 두 파일을 토큰 계산기 도구(Token Calculator Tool )에 붙여넣어 토큰 수를 비교해 보세요.

아래와 같이 HTML은 약 270,000개의 토큰을 포함합니다:

token-calculator-html-tokens

마크다운 버전은? 약 11,000 토큰에 불과합니다:

token-calculator-markdown-tokens

96% 감소는 다음과 같은 결과를 가져옵니다:

  • 비용 효율성 – 토큰 수가 적을수록 API 또는 컴퓨팅 비용이 낮아짐
  • 더 빠른 처리 – 입력 데이터 감소 = LLM 응답 속도 향상
  • 정확도 향상 – 깔끔하고 평평한 텍스트는 모델이 구조화된 데이터를 더 정확하게 추출하는 데 도움

AI 에이전트가 HTML보다 마크다운을 선호하는 이유를 자세히 알아보세요.

Python에서 변환하는 방법은 다음과 같습니다:

from markdownify import markdownify as md

clean_text = md(page_html, heading_style="ATX")

5단계 – 데이터 추출 프롬프트 생성

잘 구조화된 프롬프트는 LLM으로부터 일관되고 깔끔한 JSON 출력을 얻는 데 중요합니다. 아래는 모델이 미리 정의된 형식의 유효한 JSON만 반환하도록 지시하는 프롬프트입니다:

PROMPT = (
    "당신은 아마존 제품 데이터 추출 전문가입니다. 제공된 콘텐츠에서 제품 데이터를 추출하는 것이 당신의 임무입니다. "
    "다음과 정확히 일치하는 필드와 형식으로 구성된 유효한 JSON만을 반환하십시오:nn"
    "{n"
    '  "title": "문자열 – 상품 제목",n'
    '  "price": 숫자 – 현재 가격 (숫자만 허용)",n'
    '  "original_price": 숫자 또는 null – 원래 가격 (사용 가능한 경우)",n'
    '  "discount": number or null – 할인이 적용된 경우 할인율(퍼센트),n'
    '  "rating": number or null – 평균 평점(0–5점 척도),n'
    '  "review_count": number or null – 총 리뷰 수,n'
    '  "description": "string – 주요 제품 설명",n'
    '  "features": ["문자열"] – 특징 목록,n'
    '  "availability": "문자열 – 재고 상태",n'
    '  "asin": "문자열 – 10자리 아마존 ID"n'
    "}nn"
    "추가 텍스트 없이 JSON만 반환하십시오."
)

6단계 – LLM API 호출

Ollama를 로컬에서 실행 중이라면, HTTP API를 통해 마크다운 텍스트를 LLaMA 인스턴스로 전송할 수 있습니다:

import requests
import json

response = requests.post(
    "<http://localhost:11434/api/generate>",
    json={
        "model": "llama3.1:8b",
        "prompt": f"{PROMPT}nn{clean_text}",
        "stream": False,
        "format": "json",
        "options": {
            "temperature": 0.1,
            "num_ctx": 12000,
        },
    },
    timeout=250,)


raw_output = response.json()["response"].strip()
product_data = json.loads(raw_output)

각 옵션의 역할:

  • temperature – 결정론적 출력을 위해 0.1로 설정 (JSON 포맷팅에 이상적)
  • num_ctx – 최대 컨텍스트 길이를 정의합니다. 대부분의 아마존 제품 페이지에는 12,000 토큰으로 충분합니다
  • streamFalse일 때, API는 처리 후 전체 응답을 반환합니다
  • format – 출력 형식 지정 (JSON)
  • model – 사용할 LLaMA 버전을 지정합니다

변환된 마크다운은 일반적으로 약 11,000개의 토큰을 포함하므로 컨텍스트 창(num_ctx)을 적절히 설정하는 것이 중요합니다. 이 값을 늘리면 더 긴 입력을 처리할 수 있지만 RAM 사용량이 증가하고 처리 속도가 느려집니다. 제품 페이지가 특히 길거나 이를 지원할 컴퓨팅 리소스가 있는 경우에만 컨텍스트 제한을 늘리십시오.

7단계 – 결과 저장

마지막으로 구조화된 제품 데이터를 JSON 파일로 저장합니다:

with open("product_data.json", "w", encoding="utf-8") as f:
    json.dump(product_data, f, indent=2, ensure_ascii=False)

8단계: 스크립트 실행

스크레이퍼를 실행하려면 아마존 제품 URL을 제공하고 스크래핑 함수를 호출하세요:

if __name__ == "__main__":
    url = "<https://www.amazon.com/Black-Office-Chair-Computer-Adjustable/dp/B00FS3VJAO>"

    # 상품 데이터를 스크래핑하고 추출하는 함수 호출
    scrape_amazon_product(url)

9단계 – 전체 코드 예시

아래는 모든 단계를 통합하여 일관된 종단 간 워크플로로 구성한 완전한 Python 스크립트입니다:

import json
import logging
import time
from typing import Final, Optional, Dict, Any

import requests
from markdownify import markdownify as html_to_md
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from webdriver_manager.chrome import ChromeDriverManager

# 구성 상수
LLM_API_CONFIG: Final[Dict[str, Any]] = {
    "endpoint": "<http://localhost:11434/api/generate>",
    "model": "llama3.1:8b",
    "temperature": 0.1,
    "context_window": 12000,
    "stream": False,
    "timeout_seconds": 220,
}

DEFAULT_PRODUCT_DATA: Final[Dict[str, Any]] = {
    "title": "",
    "price": 0.0,
    "original_price": None,
    "discount": None,
    "rating": None,
    "review_count": None,
    "description": "",
    "features": [],
    "availability": "",
    "asin": "",
}

PRODUCT_DATA_EXTRACTION_PROMPT: Final[str] = (
    "당신은 아마존 제품 데이터 추출 전문가입니다. 제공된 콘텐츠에서 제품 데이터를 추출하는 것이 당신의 임무입니다. "
    "다음 필드와 형식을 정확히 갖춘 유효한 JSON만 반환하십시오:nn"
    "{n"
    '  "title": "문자열 - 제품 제목",n'
    '  "price": 숫자 - 현재 가격 (숫자 값만),n'
    '  "original_price": 숫자 또는 null - 가능한 경우 원래 가격,n'
    '  "discount": number or null - 할인율 (해당 시),n'
    '  "rating": number or null - 평균 평점 (0-5점 척도),n'
    '  "review_count": number or null - 총 리뷰 수,n'
    '  "description": "string - 주요 제품 설명",n'
    '  "features": ["문자열"] - 특징 목록,n'
    '  "availability": "문자열 - 재고 상태",n'
    '  "asin": "문자열 - 10자리 아마존 ID"n'
    "}nn"
    "추가 텍스트 없이 JSON만 반환하십시오."
)

# 로깅 구성
logging.basicConfig(
    level=logging.INFO,
    format="%(asctime)s - %(levelname)s - %(message)s",
    handlers=[logging.StreamHandler()],
)

def initialize_web_driver(headless: bool = True) -> webdriver.Chrome:
    """구성된 Chrome WebDriver 인스턴스를 초기화하고 반환합니다."""
    options = Options()
    if headless:
        options.add_argument("--headless=new")

    service = Service(ChromeDriverManager().install())
    return webdriver.Chrome(service=service, options=options)

def fetch_product_container_html(product_url: str) -> Optional[str]:
    """아마존 제품 상세 정보 컨테이너의 HTML 콘텐츠를 가져옵니다."""
    driver = initialize_web_driver()
    try:
        logging.info(f"제품 페이지 접근 중: {product_url}")
        driver.set_page_load_timeout(15)
        driver.get(product_url)

        # 제품 컨테이너가 나타날 때까지 대기
        container = WebDriverWait(driver, 5).until(
            EC.presence_of_element_located((By.ID, "ppd"))
        )
        return container.get_attribute("outerHTML")
    except Exception as e:
        logging.error(f"제품 상세 정보 가져오기 오류: {str(e)}")
        return None
    finally:
        driver.quit()

def extract_product_data_via_llm(markdown_content: str) -> Optional[Dict[str, Any]]:
    """LLM API를 사용하여 마크다운 텍스트에서 구조화된 제품 데이터를 추출합니다."""
    try:
        logging.info("LLM API를 통해 제품 데이터 추출 중...")
        response = requests.post(
            LLM_API_CONFIG["endpoint"],
            json={
                "model": LLM_API_CONFIG["model"],
                "prompt": f"{PRODUCT_DATA_EXTRACTION_PROMPT}nn{markdown_content}",
                "format": "json",
                "stream": LLM_API_CONFIG["stream"],
                "options": {
                    "temperature": LLM_API_CONFIG["temperature"],
                    "num_ctx": LLM_API_CONFIG["context_window"],
                },
            },
            timeout=LLM_API_CONFIG["timeout_seconds"],
        )
        response.raise_for_status()

        raw_output = response.json()["response"].strip()
        # 마크다운 코드 블록으로 감싸진 경우 JSON 출력 정리
        if raw_output.startswith(("```json", "```")):
            raw_output = raw_output.split("```")[1].strip()
            if raw_output.startswith("json"):
                raw_output = raw_output[4:].strip()

        return json.loads(raw_output)

    except requests.exceptions.RequestException as e:
        logging.error(f"LLM API 요청 실패: {str(e)}")
        return None
    except json.JSONDecodeError as e:
        logging.error(f"LLM 응답 파싱 실패: {str(e)}")
        return None
    except Exception as e:
        logging.error(f"데이터 추출 중 예기치 않은 오류 발생: {str(e)}")
        return None

def scrape_amazon_product(
    product_url: str, output_file: str = "product_data.json")
 -> None:
    """아마존 상품 페이지를 스크래핑하고 추출된 데이터와 HTML, 마크다운을 파일로 저장합니다."""
    start_time = time.time()
    logging.info(f"{product_url} 상품 페이지 스크래핑 시작")

    # 1단계: 상품 페이지 HTML 가져오기
    product_html = fetch_product_container_html(product_url)
    if not product_html:
        logging.error("제품 페이지 콘텐츠 가져오기 실패")
        return

    # 선택 사항: 디버깅용 HTML 저장
    with open("amazon_product.html", "w", encoding="utf-8") as f:
        f.write(product_html)

    # 2단계: HTML을 마크다운으로 변환
    product_markdown = html_to_md(product_html)

    # 선택 사항: 디버깅을 위해 마크다운 저장
    with open("amazon_product.md", "w", encoding="utf-8") as f:
        f.write(product_markdown)

    # 3단계: LLM을 통한 구조화된 데이터 추출
    product_data = (
        extract_product_data_via_llm(product_markdown) or DEFAULT_PRODUCT_DATA.copy()
    )

    # 4단계: JSON 결과 저장
    try:
        with open(output_file, "w", encoding="utf-8") as json_file:
            json.dump(product_data, json_file, indent=2, ensure_ascii=False)
        logging.info(f"제품 데이터를 {output_file}에 성공적으로 저장했습니다")
    except IOError as e:
        logging.error(f"JSON 결과 저장 실패: {str(e)}")

    elapsed_time = time.time() - start_time
    logging.info(f"{elapsed_time:.2f} 초 만에 완료")

if __name__ == "__main__":
    # 사용 예시
    test_url = (
        "<https://www.amazon.com/Black-Office-Chair-Computer-Adjustable/dp/B00FS3VJAO>"
    )
    scrape_amazon_product(test_url)

스크립트가 성공적으로 실행되면 추출된 제품 데이터를 product_data.json이라는 파일로 저장합니다. 출력 결과는 다음과 유사합니다:

{
    "title": "홈 오피스 의자 인체공학적 책상 의자 메쉬 컴퓨터 의자 요추 지지대 팔걸이 임원용 회전식 조절 가능 중간 등받이 작업용 의자 여성 성인용, 블랙",
    "price": 36.98,
    "original_price": 41.46,
    "discount": 11,
    "rating": 4.3,
    "review_count": 58112,
    "description": '사무용 의자는 모든 하드웨어와 도구가 포함되어 있으며, 약 10~15분 만에 쉽게 조립할 수 있습니다. 고밀도 스폰지 쿠션은 유연성과 편안함을 제공하며, 중간 등받이 디자인과 직사각형 요추 지지대가 인체공학적 설계 효과를 높입니다. 모든 부품은 BIFMA 인증을 받았으며 최대 250파운드(약 113kg)까지 지지합니다. 팔걸이와 조절 가능한 좌석 높이(17.1인치–20.3인치/43.5cm–51.7cm)가 포함됩니다. 인체공학적 디자인으로 장시간 사용에도 완벽한 착용감을 보장합니다.',
    "features": [
        "100% 메쉬 소재",
        "빠르고 쉬운 조립",
        "고밀도 편안한 시트",
        "BIFMA 인증 품질",
        "팔걸이 포함",
        "인체공학적 특허 디자인",
    ],
    "재고 상태": "재고 있음",
    "asin": "B00FS3VJAO",
}

자, 보세요! 지저분한 HTML이 깔끔한 JSON으로 변신합니다 — 웹 스크래핑에서 LLM의 마법이죠.

반봇 대책 극복

웹 스크래핑 봇을 실행할 때 아마존의 CAPTCHA 같은 반봇 방어 조치를 마주칠 수 있습니다:

amazon-captcha-anti-bot-challenge

이는 핵심적인 한계를 보여줍니다: LLaMA 기반 워크플로우는 HTML 파싱에는 탁월하지만, 고급 안티봇 보호 기능이 적용된 사이트에서는 해당 콘텐츠에 접근하는 것이 여전히 어려운 과제입니다.

이를 극복하려면 아마존 CAPTCHA를 우회하고 다른 웹 스크래핑 문제를 처리해야 합니다.

이때 Bright Data의 Scraping Browser가 해결책이 됩니다. 이 솔루션은 현대 웹 환경의 복잡성을 처리하기 위해 특별히 설계되었으며, 기존 도구가 실패하는 가장 보호된 웹사이트도 안정적으로 접근할 수 있습니다.

자세히 알아보기: 스크래핑 브라우저 대 헤드리스 브라우저

Bright Data 스크래핑 브라우저사용 이유

Bright Data 스크래핑 브라우저는 내장 프록시 인프라와 고급 차단 해제 기능을 갖춘 헤드리스 클라우드 기반 브라우저로, 현대적인 웹 스크래핑 프로젝트의 확장을 위해 특별히 설계되었습니다. Bright Data Unlocker 스크래핑 제품군의 일부입니다.

개발자와 데이터 팀이 선택하는 이유는 다음과 같습니다:

  • 신뢰할 수 있는 TLS 지문 및 은밀한 우회 기술
  • 1억 5천만 개 이상의 IP 프록시 네트워크로 구동되는 내장형 IP 로테이션
  • 자동 CAPTCHA 해결
  • 인프라 비용 절감 – 고가의 클라우드 설정 및 지속적인 유지 관리 제거
  • Playwright, Puppeteer, Selenium에 대한 네이티브 지원
  • 대용량 데이터 추출을 위한 무제한 확장성

가장 큰 장점은? 몇 줄의 코드만으로 기존 워크플로에 통합할 수 있다는 점입니다.

더 많은 기업이 클라우드 기반 웹 스크래핑으로 전환하는 이유를 확인하세요.

스크래핑 브라우저 설정하기

스크래핑 브라우저 시작 방법:

Bright Data 계정을 생성하세요 (신규 사용자는 결제 수단 추가 후 5달러 크레딧을 받습니다). 대시보드에서 ‘프록시 및 스크래핑’으로 이동하여 ‘시작하기’를 클릭하세요.

    brightdata-scraping-solutions-dashboard

    새 영역(예: test_browser)을 생성하고 프리미엄 도메인CAPTCHA 솔버와 같은 기능을 활성화하세요.

      brightdata-create-scraping-browser-zone

      다음으로 대시보드에서 Selenium URL을 복사하세요.

        brightdata-selenium-connection-credentials

        스크래핑 브라우저용 코드 수정

        스크래핑 브라우저를 통해 연결하도록 initialize_web_driver 함수를 업데이트하세요:

        from selenium.webdriver import Remote
        from selenium.webdriver.chrome.options import Options as ChromeOptions
        from selenium.webdriver.chromium.remote_connection import ChromiumRemoteConnection
        
        SBR_WEBDRIVER = "<https://username:password@host>:port"
        
        def initialize_web_driver():
            options = ChromeOptions()
            sbr_connection = ChromiumRemoteConnection(SBR_WEBDRIVER, "goog", "chrome")
            driver = Remote(sbr_connection, options=options)
            return driver
        

        이것으로 끝입니다 — 이제 스크레이퍼가 Bright Data 인프라를 통해 경로를 설정하며 Amazon 및 기타 봇 방지 시스템을 손쉽게 처리합니다.

        스크래핑 브라우저 문서에서 더 고급 기능을 살펴보세요.

        다음 단계 및 대체 솔루션

        LLaMA 기반 스크레이퍼의 기능을 확장하거나 다른 구현 방식을 탐색하려면 다음 개선 사항 및 대안을 고려하세요.

        • 스크립트 재사용 가능하게 만들기: 유연한 사용을 위해 URL과 프롬프트를 명령줄 인수로 전달할 수 있도록 합니다.
        • 자격 증명 보안: 스크래핑 브라우저 자격 증명을 .env 파일에 저장하고 python-dotenv를 사용하여 안전하게 로드하세요.
        • 다중 페이지 지원 추가: 여러 페이지를 크롤링하고 페이지 매김을 처리하는 로직 구현
        • 더 많은 웹사이트 스크래핑 – Scraping Browser의 탐지 방지 기능을 활용하여 다른 전자상거래 플랫폼 스크래핑
        • Google 서비스에서 데이터 추출: Google Flights, Google Search, Google Trends 전용 스크레이퍼 구축 또는 즉시 사용 가능한 검색 데이터를 위한 Bright Data의 SERP API 활용

        관리형 솔루션을 선호하거나 다른 LLM 기반 방법을 탐색하고 싶다면 다음 옵션이 적합할 수 있습니다:

        1. Gemini를 활용한 스크래핑
        2. Perplexity를 이용한 스크래핑
        3. Crawl4AI 및 DeepSeek를 활용한 AI 스크레이퍼 구축

        결론

        이 가이드는 LLaMA 3를 활용해 탄력적인 웹 스크레이퍼를 구축하는 데 필요한 견고한 기반을 제공합니다. 대규모 언어 모델의 추론 능력과 고급 스크레이핑 도구를 결합함으로써 복잡한 웹사이트에서도 최소한의 노력으로 구조화된 데이터를 추출할 수 있습니다.

        탐지 및 차단 회피는 웹 스크래핑에서 가장 큰 과제 중 하나입니다. Bright Data 스크래핑 브라우저는 동적 렌더링, 지문 인식, 봇 방지 보호를 자동으로 처리하여 이 문제를 해결합니다. 이는 확장 가능한 데이터 추출을 지원하도록 설계된 포괄적인 도구 모음의 일부입니다:

        지금 바로 가입하여 Bright Data의 스크래핑 및 프록시 도구 전체 제품군을 무료로 테스트해 보세요!