Pydantic, Crawl 및 Gemini를 사용하여 비동기 전자상거래 웹 스크레이퍼 구축
간단히 말하면: 이 가이드에서는crawl4ai의 AI 기반 추출 및 Pydantic 데이터 모델을 사용하여 전자상거래 스크래퍼를 구축하는 방법을 보여줍니다. 스크레이퍼는 제품 목록(이름, 가격)과 자세한 제품 정보(사양, 리뷰)를 모두 비동기식으로 검색합니다.
Google Colab에서 전체 코드에 액세스
전자상거래 데이터 분석을 위한 기존 웹 스크래핑의 복잡성에 지치셨나요? 이 튜토리얼에서는 최신 Python 도구를 사용하여 프로세스를 단순화합니다. 지능형 데이터 추출에는 crawl4ai를, 강력한 데이터 모델링 및 검증에는 Pydantic을 활용합니다.
Crawl4AI와 Pydantic을 선택하는 이유는 무엇인가요?
- crawl4ai: AI 기반 추출 방법을 사용하여 웹 크롤링 및 스크래핑을 간소화합니다.
- Pydantic: 데이터 검증 및 스키마 관리를 제공하여 구조화되고 정확한 스크랩 데이터를 보장합니다.
토코피디아를 타겟으로 하는 이유는 무엇인가요?
인도네시아의 주요 전자상거래 플랫폼인 Tokopedia가 그 예입니다. (참고: 저자는 인도네시아인이며 플랫폼 사용자이지만 제휴 관계는 아닙니다.) 이 원칙은 다른 전자 상거래 사이트에도 적용됩니다. 이러한 스크래핑 접근 방식은 전자 상거래 분석, 시장 조사 또는 자동화된 데이터 수집에 관심이 있는 개발자에게 유용합니다.
이 접근 방식의 차별점은 무엇입니까?
복잡한 CSS 선택기나 XPath에 의존하는 대신 우리는 creep4ai의 LLM 기반 추출을 활용합니다. 다음을 제공합니다:
- 웹사이트 구조 변경에 대한 탄력성이 향상되었습니다.
- 더 깔끔하고 구조화된 데이터 출력.
- 유지관리 비용이 감소합니다.
개발 환경 설정
필요한 패키지 설치부터 시작하세요.
%pip install -U crawl4ai %pip install nest_asyncio %pip install pydantic
노트북에서 비동기 코드 실행을 위해 nest_asyncio
:
import crawl4ai import asyncio import nest_asyncio nest_asyncio.apply()
Pydantic으로 데이터 모델 정의
Pydantic을 사용하여 예상되는 데이터 구조를 정의합니다. 모델은 다음과 같습니다.
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.")
이러한 모델은 템플릿 역할을 하여 데이터 검증을 보장하고 명확한 문서를 제공합니다.
스크래핑 과정
스크레이퍼는 두 단계로 작동합니다.
1. 제품 목록 크롤링
먼저 검색 결과 페이지를 검색합니다.
async def crawl_tokopedia_listings(query: str = "mouse-wireless", max_pages: int = 1): # ... (Code remains the same) ...
2. 제품 세부정보 가져오는 중
다음으로 각 제품 URL에 대해 자세한 정보를 가져옵니다.
async def crawl_tokopedia_detail(product_url: str): # ... (Code remains the same) ...
스테이지 결합
마지막으로 두 단계를 통합합니다.
async def run_full_scrape(query="mouse-wireless", max_pages=2, limit=15): # ... (Code remains the same) ...
스크레이퍼 실행
스크래퍼 실행 방법은 다음과 같습니다.
%pip install -U crawl4ai %pip install nest_asyncio %pip install pydantic
전문가의 팁
- 속도 제한: Tokopedia 서버를 존중합니다. 대규모 스크래핑 요청 사이에 지연이 발생합니다.
-
캐싱: 개발 중에 크롤링4ai의 캐싱을 활성화합니다(
cache_mode=CacheMode.ENABLED
). - 오류 처리: 프로덕션 용도로 포괄적인 오류 처리 및 재시도 메커니즘을 구현합니다.
- API 키: Gemini API 키를 코드에 직접 저장하지 않고 환경 변수에 안전하게 저장합니다.
다음 단계
이 스크레이퍼는 다음으로 확장될 수 있습니다.
- 데이터베이스에 데이터를 저장합니다.
- 시간 경과에 따른 가격 변화를 모니터링하세요.
- 제품 동향과 패턴을 분석합니다.
- 여러 매장의 가격을 비교해 보세요.
결론
crawl4ai의 LLM 기반 추출은 기존 방법에 비해 웹 스크래핑 유지 관리성을 크게 향상시킵니다. Pydantic과의 통합으로 데이터 정확성과 구조가 보장됩니다.
스크래핑하기 전에 항상 웹사이트의 robots.txt
및 서비스 약관을 준수하세요.
중요 링크:
Crawl4AI
- 공식 웹사이트: https://www.php.cn/link/1026d8c97a822ee171c6cbf939fe4aca
- GitHub 저장소: https://www.php.cn/link/62c1b075041300455ec2b54495d93c99
- 문서: https://www.php.cn/link/1026d8c97a822ee171c6cbf939fe4aca/mkdocs/core/installation/
피단틱
- 공식 문서: https://www.php.cn/link/a4d4ec4aa3c45731396ed6e65fee40b9
- PyPI 페이지: https://www.php.cn/link/4d8ab89733dd9a88f1a9d130ca675c2e
- GitHub 저장소: https://www.php.cn/link/22935fba49f7d80d5adf1cfa6b0344f4
참고: 전체 코드는 Colab 노트북에서 확인할 수 있습니다. 자유롭게 실험하고 특정 요구 사항에 맞게 조정해 보세요.
위 내용은 Pydantic, Crawl 및 Gemini를 사용하여 비동기 전자상거래 웹 스크레이퍼 구축의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python은 배우고 사용하기 쉽고 C는 더 강력하지만 복잡합니다. 1. Python Syntax는 간결하며 초보자에게 적합합니다. 동적 타이핑 및 자동 메모리 관리를 사용하면 사용하기 쉽지만 런타임 오류가 발생할 수 있습니다. 2.C는 고성능 응용 프로그램에 적합한 저수준 제어 및 고급 기능을 제공하지만 학습 임계 값이 높고 수동 메모리 및 유형 안전 관리가 필요합니다.

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 개발 효율에서 C보다 낫지 만 C는 실행 성능이 높습니다. 1. Python의 간결한 구문 및 풍부한 라이브러리는 개발 효율성을 향상시킵니다. 2.C의 컴파일 유형 특성 및 하드웨어 제어는 실행 성능을 향상시킵니다. 선택할 때는 프로젝트 요구에 따라 개발 속도 및 실행 효율성을 평가해야합니다.

Pythonlistsarepartoftsandardlardlibrary, whileraysarenot.listsarebuilt-in, 다재다능하고, 수집 할 수있는 반면, arraysarreprovidedByTearRaymoduledlesscommonlyusedDuetolimitedFunctionality.

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

하루에 2 시간 동안 파이썬을 배우는 것으로 충분합니까? 목표와 학습 방법에 따라 다릅니다. 1) 명확한 학습 계획을 개발, 2) 적절한 학습 자원 및 방법을 선택하고 3) 실습 연습 및 검토 및 통합 연습 및 검토 및 통합,이 기간 동안 Python의 기본 지식과 고급 기능을 점차적으로 마스터 할 수 있습니다.

Python과 C는 각각 고유 한 장점이 있으며 선택은 프로젝트 요구 사항을 기반으로해야합니다. 1) Python은 간결한 구문 및 동적 타이핑으로 인해 빠른 개발 및 데이터 처리에 적합합니다. 2) C는 정적 타이핑 및 수동 메모리 관리로 인해 고성능 및 시스템 프로그래밍에 적합합니다.
