使用 Pydantic、Crawl 和 Gemini 建立非同步電子商務網路爬蟲
簡而言之: 本指南示範如何使用crawl4ai 的人工智慧擷取和 Pydantic 資料模型建立電子商務抓取工具。 抓取工具非同步檢索產品清單(名稱、價格)和詳細的產品資訊(規格、評論)。
在 Google Colab 上存取完整程式碼
厭倦了電子商務資料分析的傳統網路抓取的複雜性?本教學使用現代 Python 工具簡化了這個過程。我們將利用 crawl4ai 進行智慧資料擷取,並利用 Pydantic 進行穩健的資料建模和驗證。
為什麼選擇 Crawl4AI 和 Pydantic?
- crawl4ai:使用人工智慧驅動的提取方法來簡化網路爬行和抓取。
- Pydantic:提供資料驗證和模式管理,確保抓取的資料結構化且準確。
為什麼瞄準 Tokopedia?
印尼主要電商平台Tokopedia就是我們的例子。 (註:作者是印尼人,也是該平台的用戶,但不隸屬於該平台。)這些原則適用於其他電子商務網站。 這種抓取方法對於對電子商務分析、市場研究或自動資料收集感興趣的開發人員來說是有益的。
是什麼讓這種方法與眾不同?
我們不依賴複雜的CSS選擇器或XPath,而是利用crawl4ai基於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 的伺服器;在大規模抓取請求之間引入延遲。
-
快取:在開發過程中啟用crawl4ai的快取(
cache_mode=CacheMode.ENABLED
)。 - 錯誤處理:為生產使用實現全面的錯誤處理和重試機制。
- API 金鑰: 將 Gemini API 金鑰安全地儲存在環境變數中,而不是直接儲存在程式碼中。
後續步驟
這個刮刀可以擴展到:
- 將資料儲存在資料庫中。
- 監控價格隨時間的變化。
- 分析產品趨勢與模式。
- 比較多家商店的價格。
結論
crawl4ai 基於 LLM 的提取與傳統方法相比顯著提高了網頁抓取的可維護性。 與 Pydantic 的整合確保了數據的準確性和結構。
在抓取之前始終遵守網站的robots.txt
和服務條款。
重要連結:
爬4AI
- 官方網站: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 Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python更易學且易用,C 則更強大但複雜。 1.Python語法簡潔,適合初學者,動態類型和自動內存管理使其易用,但可能導致運行時錯誤。 2.C 提供低級控制和高級特性,適合高性能應用,但學習門檻高,需手動管理內存和類型安全。

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。
