簡而言之: 本指南示範如何使用crawl4ai 的人工智慧擷取和 Pydantic 資料模型建立電子商務抓取工具。 抓取工具非同步檢索產品清單(名稱、價格)和詳細的產品資訊(規格、評論)。
厭倦了電子商務資料分析的傳統網路抓取的複雜性?本教學使用現代 Python 工具簡化了這個過程。我們將利用 crawl4ai 進行智慧資料擷取,並利用 Pydantic 進行穩健的資料建模和驗證。
印尼主要電商平台Tokopedia就是我們的例子。 (註:作者是印尼人,也是該平台的用戶,但不隸屬於該平台。)這些原則適用於其他電子商務網站。 這種抓取方法對於對電子商務分析、市場研究或自動資料收集感興趣的開發人員來說是有益的。
我們不依賴複雜的CSS選擇器或XPath,而是利用crawl4ai基於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中文網其他相關文章!