간단히 말하면: 이 가이드에서는crawl4ai의 AI 기반 추출 및 Pydantic 데이터 모델을 사용하여 전자상거래 스크래퍼를 구축하는 방법을 보여줍니다. 스크레이퍼는 제품 목록(이름, 가격)과 자세한 제품 정보(사양, 리뷰)를 모두 비동기식으로 검색합니다.
전자상거래 데이터 분석을 위한 기존 웹 스크래핑의 복잡성에 지치셨나요? 이 튜토리얼에서는 최신 Python 도구를 사용하여 프로세스를 단순화합니다. 지능형 데이터 추출에는 crawl4ai를, 강력한 데이터 모델링 및 검증에는 Pydantic을 활용합니다.
인도네시아의 주요 전자상거래 플랫폼인 Tokopedia가 그 예입니다. (참고: 저자는 인도네시아인이며 플랫폼 사용자이지만 제휴 관계는 아닙니다.) 이 원칙은 다른 전자 상거래 사이트에도 적용됩니다. 이러한 스크래핑 접근 방식은 전자 상거래 분석, 시장 조사 또는 자동화된 데이터 수집에 관심이 있는 개발자에게 유용합니다.
복잡한 CSS 선택기나 XPath에 의존하는 대신 우리는 creep4ai의 LLM 기반 추출을 활용합니다. 다음을 제공합니다:
필요한 패키지 설치부터 시작하세요.
<code class="language-bash">%pip install -U crawl4ai %pip install nest_asyncio %pip install pydantic</code>
노트북에서 비동기 코드 실행을 위해 nest_asyncio
:
<code class="language-python">import crawl4ai import asyncio import nest_asyncio nest_asyncio.apply()</code>
Pydantic을 사용하여 예상되는 데이터 구조를 정의합니다. 모델은 다음과 같습니다.
<code class="language-python">from pydantic import BaseModel, Field from typing import List, Optional class TokopediaListingItem(BaseModel): product_name: str = Field(..., description="Product name from listing.") product_url: str = Field(..., description="URL to product detail page.") price: str = Field(None, description="Price displayed in listing.") store_name: str = Field(None, description="Store name from listing.") rating: str = Field(None, description="Rating (1-5 scale) from listing.") image_url: str = Field(None, description="Primary image URL from listing.") class TokopediaProductDetail(BaseModel): product_name: str = Field(..., description="Product name from detail page.") all_images: List[str] = Field(default_factory=list, description="List of all product image URLs.") specs: str = Field(None, description="Technical specifications or short info.") description: str = Field(None, description="Long product description.") variants: List[str] = Field(default_factory=list, description="List of variants or color options.") satisfaction_percentage: Optional[str] = Field(None, description="Customer satisfaction percentage.") total_ratings: Optional[str] = Field(None, description="Total number of ratings.") total_reviews: Optional[str] = Field(None, description="Total number of reviews.") stock: Optional[str] = Field(None, description="Stock availability.")</code>
이러한 모델은 템플릿 역할을 하여 데이터 검증을 보장하고 명확한 문서를 제공합니다.
스크레이퍼는 두 단계로 작동합니다.
먼저 검색 결과 페이지를 검색합니다.
<code class="language-python">async def crawl_tokopedia_listings(query: str = "mouse-wireless", max_pages: int = 1): # ... (Code remains the same) ...</code>
다음으로 각 제품 URL에 대해 자세한 정보를 가져옵니다.
<code class="language-python">async def crawl_tokopedia_detail(product_url: str): # ... (Code remains the same) ...</code>
마지막으로 두 단계를 통합합니다.
<code class="language-python">async def run_full_scrape(query="mouse-wireless", max_pages=2, limit=15): # ... (Code remains the same) ...</code>
스크래퍼 실행 방법은 다음과 같습니다.
<code class="language-bash">%pip install -U crawl4ai %pip install nest_asyncio %pip install pydantic</code>
cache_mode=CacheMode.ENABLED
).이 스크레이퍼는 다음으로 확장될 수 있습니다.
crawl4ai의 LLM 기반 추출은 기존 방법에 비해 웹 스크래핑 유지 관리성을 크게 향상시킵니다. Pydantic과의 통합으로 데이터 정확성과 구조가 보장됩니다.
스크래핑하기 전에 항상 웹사이트의 robots.txt
및 서비스 약관을 준수하세요.
위 내용은 Pydantic, Crawl 및 Gemini를 사용하여 비동기 전자상거래 웹 스크레이퍼 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!