Maison >développement back-end >Tutoriel Python >Création d'un grattoir Web de commerce électronique asynchrone avec Pydantic, Crawl et Gemini
En bref : Ce guide montre la création d'un scraper de commerce électronique à l'aide de l'extraction basée sur l'IA de crawl4ai et des modèles de données Pydantic. Le scraper récupère de manière asynchrone à la fois les listes de produits (noms, prix) et les informations détaillées sur les produits (spécifications, avis).
Vous en avez assez des complexités du web scraping traditionnel pour l'analyse des données de commerce électronique ? Ce didacticiel simplifie le processus à l'aide d'outils Python modernes. Nous exploiterons crawl4ai pour une extraction intelligente des données et Pydantic pour une modélisation et une validation robustes des données.
Tokopedia, une importante plateforme de commerce électronique indonésienne, nous sert d'exemple. (Remarque : l'auteur est indonésien et utilisateur de la plateforme, mais non affilié.) Les principes s'appliquent à d'autres sites de commerce électronique. Cette approche de scraping est bénéfique pour les développeurs intéressés par l'analyse du commerce électronique, les études de marché ou la collecte automatisée de données.
Au lieu de nous appuyer sur des sélecteurs CSS complexes ou XPath, nous utilisons l'extraction basée sur LLM de crawl4ai. Cela offre :
Commencez par installer les packages nécessaires :
<code class="language-bash">%pip install -U crawl4ai %pip install nest_asyncio %pip install pydantic</code>
Pour l'exécution de code asynchrone dans les notebooks, nous utiliserons également nest_asyncio
:
<code class="language-python">import crawl4ai import asyncio import nest_asyncio nest_asyncio.apply()</code>
Nous utilisons Pydantic pour définir la structure de données attendue. Voici les modèles :
<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>
Ces modèles servent de modèles, garantissant la validation des données et fournissant une documentation claire.
Le grattoir fonctionne en deux phases :
Tout d'abord, nous récupérons les pages de résultats de recherche :
<code class="language-python">async def crawl_tokopedia_listings(query: str = "mouse-wireless", max_pages: int = 1): # ... (Code remains the same) ...</code>
Ensuite, pour chaque URL de produit, nous récupérons des informations détaillées :
<code class="language-python">async def crawl_tokopedia_detail(product_url: str): # ... (Code remains the same) ...</code>
Enfin, nous intégrons les deux phases :
<code class="language-python">async def run_full_scrape(query="mouse-wireless", max_pages=2, limit=15): # ... (Code remains the same) ...</code>
Voici comment exécuter le scraper :
<code class="language-bash">%pip install -U crawl4ai %pip install nest_asyncio %pip install pydantic</code>
cache_mode=CacheMode.ENABLED
).Ce grattoir peut être étendu à :
L'extraction basée sur LLM de crawl4ai améliore considérablement la maintenabilité du web scraping par rapport aux méthodes traditionnelles. L'intégration avec Pydantic garantit l'exactitude et la structure des données.
Respectez toujours les robots.txt
et les conditions d'utilisation d'un site Web avant de le supprimer.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!