如果您曾經嘗試按大規模刮擦數據,尤其是對於AI項目,您會知道它會變得多麼凌亂和慢。這就是crawl4ai進入的地方。這是一種開源工具,旨在為那些想要更多功能,靈活性和更少的頭痛的開發人員構建。
如果您要培訓語言模型,分析產品清單,或者只是試圖從動態站點中獲取乾淨的結構化數據,則Crawl4ai可以使您認真控制。在本指南中,我們將分解使它與眾不同的原因,如何入門以及它在哪裡發光(是的,它沒有)。
讓我們潛水。
Crawl4AI是一個強大的開源框架,用於逐漸爬行和刮擦。無論您是收集用於AI培訓的數據,監視網站還是分析在線內容,Crawl4AI都可以使過程更快,更容易。它可以同時爬網,並將混亂的網頁變成乾淨的結構化數據。
由於其對AI友好的功能和靈活的設置,它很快成為需要大量高質量網絡數據的開發人員,數據科學家和研究團隊的首選。
這是將crawl4ai與其他工具區分開的原因:
Crawl4AI是為知道自己的法規(尤其是從事數據繁重或AI驅動的領域工作的人)而建造的。如果您對Python感到滿意,並且希望對數據刮擦過程進行更多控制,那麼此工具可能正是您所需的。
這是誰能從使用crawl4ai中受益最大的人:
但這是一個重要的說明:crawl4ai並不適用於非技術用戶。如果您是營銷人員,業務分析師或沒有編碼背景的代理商,則此工具可能會感到太複雜。它假設您可以舒適地編寫Python腳本,設置配置並在需要時進行調試。
crawl4ai不僅僅是另一個刮擦工具,它是用於高級,異步網絡爬網和智能數據提取的全功能框架。它是由開發人員,AI工程師和數據分析師牢記的,從一開始就提供靈活性,速度和精度。
在本節中,您將學習如何安裝crawl4ai,運行第一個爬網,並使用屏幕截圖捕獲,內容塊和自定義數據提取策略等高級功能。
根據您的設置,安裝Crawl4AI的方法有幾種。最常見和靈活的選擇是將其安裝為Python軟件包。
# Install Crawl4ai with all available features pip3 install "Crawl4ai[all]" # Download necessary AI models for improved performance Crawl4ai-download-models # Install browser dependencies using Playwright playwright install Once installed, you're ready to launch your first web crawl.
要開始,請使用Asyncwebcrawler類。它會異步地管理著爬行的生命週期,並緩存您的結果,以更快地重複爬行。
from Crawl4ai import AsyncWebCrawler async with AsyncWebCrawler(verbose=True) as crawler: result = await crawler.arun(url="https://en.wikipedia.org/wiki/3_Idiots", bypass_cache=False) print(f"Extracted content: {result.extracted_content}") You can output the content in various formats:
print(result.markdown) print(result.cleaned_html) This flexibility is one reason why Crawl4ai stands out for AI-ready scraping.
想要您抓取的頁面的視覺記錄嗎?您可以使用crawl4ai捕獲整頁屏幕截圖。
import base64 from Crawl4ai import AsyncWebCrawler async with AsyncWebCrawler(verbose=True) as crawler: result = await crawler.arun(url="https://www.cricbuzz.com/", screenshot=True) with open("screenshot.png", "wb") as f: f.write(base64.b64decode(result.screenshot)) print("Screenshot saved!")
Crawl4AI還使用JSONCSEXTRACTIONSTRATEGY等策略來支持結構化數據提取,該策略使您可以定義自己的架構,以提取諸如頭條,類別或鏈接之類的元素。
from Crawl4ai.extraction_strategy import JsonCssExtractionStrategy schema = { "name": "News Teaser Extractor", "baseSelector": ".wide-tease-item__wrapper", "fields": [ {"name": "headline", "selector": ".wide-tease-item__headline", "type": "text"}, {"name": "summary", "selector": ".wide-tease-item__description", "type": "text"}, {"name": "link", "selector": "a[href]", "type": "attribute", "attribute": "href"}, # More fields can be added here ], } Pass this schema into the crawler and get structured JSON results, perfect for automation or AI training.
在處理GitHub等JavaScript繁重的網站時,您可以使用基於會話的爬網來管理同一瀏覽會話中的多個頁面加載。
使用會話ID,自定義JavaScript和生命週期掛鉤,您可以滾動瀏覽分頁的內容或在多個頁面上與Web元素進行交互。
好處:
到目前為止,您應該對如何安裝和使用crawl4ai (從簡單的爬網到高級策略)有一個努力的了解。
Crawl4ai最有力的功能之一是它能夠超越單頁。它不僅可以從主頁中獲取內容,還可以探索整個站點(按部分),以完全控制其深處。
這稱為“深爬行” ,非常適合跨多個頁面收集數據,例如博客檔案,產品列表或分頁的內容。
Crawl4ai配備了三種深層爬行策略,每種策略都為不同的需求而設計:
該策略使用深度優先的方法,在移至下一個分支之前深入到每個鏈接。當您想充分探索網站的特定部分時,這很有用。
from Crawl4ai.deep_crawling import DFSDeepCrawlStrategy strategy = DFSDeepCrawlStrategy( max_depth=2, include_external=False, max_pages=30, score_threshold=0.5 )
這是一種廣度優先的策略,在更深入之前探討了當前深度的所有鏈接。它是快速覆蓋各種頁面的理想選擇。
from Crawl4ai.deep_crawling import BFSDeepCrawlStrategy strategy = BFSDeepCrawlStrategy( max_depth=2, include_external=False, max_pages=50, score_threshold=0.3 )
該智能策略使用評分系統來優先級鏈接到爬網的鏈接。最高相關性的URL首先被爬行,在時間或資源受到限制時使其理想。
from Crawl4ai.deep_crawling import BestFirstCrawlingStrategy from Crawl4ai.deep_crawling.scorers import KeywordRelevanceScorer scorer = KeywordRelevanceScorer( keywords=["crawl", "async", "example"], weight=0.7 ) strategy = BestFirstCrawlingStrategy( max_depth=2, include_external=False, url_scorer=scorer, max_pages=25 )
為什麼爬行很重要
如果您要培訓AI模型或構建用於分析的數據集,則深爬爬行可以使您可以在整個站點上達到結構化的,有意義的內容,而不僅僅是表面上的內容。借助Crawl4ai的策略選擇,您始終可以控制爬蟲的行為。
從網站獲取數據只是第一步。最重要的是您如何提取它以及數據的清潔和有用。使用Crawl4AI ,您將獲得兩個有效的結構化數據提取的功能:一種快速有效的選擇,一種使用大型語言模型(LLMS)進行更複雜的任務。
讓我們探索兩者。
有時,您不需要任何幻想的東西,而是結構化的數據,例如產品名稱,價格或文章摘要。這就是Crawl4ai的基於CSS/XPATH的策略的出現。它稱為JSONCSSEXTRACTIONSTRATEGY,它使用簡單的選擇器來從網頁上汲取所需的內容。
這是一個提取加密貨幣名稱和價格的快速示例:
schema = { "name": "Crypto Prices", "baseSelector": "div.crypto-row", "fields": [ {"name": "coin_name", "selector": "h2.coin-name", "type": "text"}, {"name": "price", "selector": "span.coin-price", "type": "text"} ] } This method is:
它非常適合刮擦產品清單,新聞頭條,股票股票或任何具有可預測的HTML模式的網站。
對於凌亂或複雜的頁面(想想新聞網站,用戶評論或混合內容),單獨的選擇程序可能無法正常工作。那就是llmextractionstrategy閃耀的地方。
該方法使用GPT-4,Gemini或Claude等大型語言模型:
這是一個示例,我們要求模型提取產品名稱和價格:
llm_strategy = LLMExtractionStrategy( llmConfig=LlmConfig(provider="openai/gpt-4", api_token=os.getenv('OPENAI_API_KEY')), schema=Product.model_json_schema(), extraction_type="schema", instruction="Extract product names and prices from the webpage.", input_format="html" ) This method is:
它甚至包括一個內置的塊系系統,以分解長頁並管理令牌限制,因此您不會失去重要的環境。
在評估諸如Crawl4ai之類的工具時,聽到實際使用過它的人會很有幫助。通過檢查開發人員博客,AI工具目錄和在線論壇上的評論,出現了一些清晰的模式- 好與壞。
用例 | 使用無LLM | 使用基於LLM的 |
---|---|---|
乾淨,結構化頁面 | ✅是的 | ❌不需要 |
複雜或混亂的佈局 | ❌可能會破裂 | ✅運行良好 |
預算敏感的刮擦 | ✅絕妙的選擇 | ❌會變得昂貴 |
人工智能培訓或語義分析 | ❌太簡單了 | ✅完美 |
如果您從Web數據中進行大規模刮擦或提取有意義的見解,crawl4ai為您提供了正確的工作工具。
許多開發人員和數據專業人員讚揚Crawl4ai的性能和靈活性。這是突出的東西:
當然,Crawl4ai並不完美。對於許多初學者或更少的技術用戶來說,這可能是一種艱難的學習經歷。
Crawl4ai不是為編程或網絡刮擦的剛剛建造的。沒有拖放接口- 所有內容都通過Python腳本和配置文件運行。如果您還不熟悉這些工具,則設置環境,編寫自己的提取邏輯並處理異步爬行可能會令人不知所措。
“如果您不是編碼員,您將迷路。” - 一項開發人員評論
即使有一些經驗的用戶說crawl4ai有時可能會令人沮喪。儘管文檔正在改善,但仍在進行中,並且支持社區相對較小。如果您擊中錯誤或需要在復雜的方面進行幫助,例如處理驗證碼或登錄網站,則可能需要搜索github問題或堆棧溢出。
此外,默認情況下,許多企業都依賴(例如計劃的爬網,登錄處理或驗證碼解決方案)。您需要自己實施。
最重要的是: crawl4ai並不適合所有人,但是如果您知道圍繞Python的方式並且需要大規模的網絡數據,那麼很難擊敗。它是快速,靈活的,並構建了AI。一旦越過學習曲線,它就會成為數據工具包中強大的一部分。
並不真地。 Crawl4AI專為對Python舒適並通過代碼配置爬網的開發人員和技術用戶而構建。如果您是網絡刮擦的新手,那麼可能會有一個陡峭的學習曲線。
是的。 crawl4ai使用瀏覽器自動化(例如劇作家)渲染JavaScript較重的頁面,從而使其可以刮擦在靜態HTML中不會顯示的內容。
Crawl4ai可以提取純文本,HTML,JSON,甚至是圖像或視頻等媒體。它還支持使用模式的結構化提取,以及基於LLM的語義解析等高級選項。
是的,但這是手冊。您可以使用瀏覽器掛鉤和會話ID實現登錄流和會話持久性,但這取決於您腳本邏輯。
與拖放工具不同,Crawl4ai可以完全控制爬行行為,數據提取邏輯和可擴展性。它更靈活,更有力,但也更具技術性來設置。