Crawl4AI: AI-Optimized Web Crawling for Data Pipelines

# Crawl4AI: Web Crawling yang Dioptimalkan untuk Pipeline AI Dalam membangun aplikasi AI modern, terutama yang berbasis Retrieval-Augmented Generation (RAG), salah satu tantangan terbesar adalah **me...

By Ruby Abdullah · · tutorial
Crawl4AIWeb ScrapingAIData PipelinePython

Crawl4AI: AI-Optimized Web Crawling for Data Pipelines

When building modern AI applications, especially those based on Retrieval-Augmented Generation (RAG), one of the biggest challenges is getting high-quality data from the web. Most traditional web scrapers produce messy raw HTML that is difficult for LLMs to process.

Crawl4AI is an open-source solution designed specifically for AI needs. It produces output as clean markdown and structured data ready to be used directly in your AI pipeline.

What Is Crawl4AI?

Crawl4AI is an open-source Python library for web crawling optimized for AI and data pipelines. Its key features include:

  • Clean Markdown Output: Automatically converts web pages into clean markdown
  • Async Crawling: Asynchronous support for fast parallel crawling
  • LLM-Based Extraction: Structured data extraction using LLMs
  • CSS-Based Extraction: Data extraction using CSS selectors without LLM
  • JavaScript Rendering: Handles JavaScript-rendered pages
  • Chunking Strategies: Various strategies for splitting content into optimal chunks
  • Session Management: Manages cookies and sessions for complex crawling

Installation

Basic Installation

pip install crawl4ai

Browser Setup (Playwright)

Crawl4AI uses Playwright for web page rendering. After installation, run the browser setup:

# Install Chromium browser

crawl4ai-setup

Or manually via playwright

playwright install chromium

Installation with Full Dependencies

# With all features support

pip install "crawl4ai[all]"

Verify Installation

import crawl4ai

print(f"Crawl4AI version: {crawl4ai.version}")

Basic Crawling

Simple Page Crawling

import asyncio

from crawl4ai import AsyncWebCrawler

async def basiccrawl():

async with AsyncWebCrawler() as crawler:

result = await crawler.arun(url="https://example.com")

# Crawling status

print(f"Status: {result.success}")

print(f"Status Code: {result.statuscode}")

# Content in markdown

print(f"Markdown length: {len(result.markdown)}")

print(result.markdown[:500])

# Clean markdown (without navigation, footer, etc.)

print(f"\nClean markdown length: {len(result.cleanedhtml)}")

Run

asyncio.run(basiccrawl())

Using Fit Markdown

Crawl4AI provides fitmarkdown which is a filtered version of markdown without unimportant elements:

async def crawlwithfitmarkdown():

async with AsyncWebCrawler() as crawler:

result = await crawler.arun(url="https://docs.python.org/3/tutorial/")

# Raw markdown - includes navigation, sidebar, etc.

print(f"Raw markdown: {len(result.markdown)} chars")

# Fit markdown - main content only

print(f"Fit markdown: {len(result.fitmarkdown)} chars")

# Use fitmarkdown for LLM input

print(result.fitmarkdown[:500])

asyncio.run(crawlwithfitmarkdown())

Crawler Configuration

from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, BrowserConfig

async def configuredcrawl():

# Browser configuration

browserconfig = BrowserConfig(

headless=True,

browsertype="chromium",

verbose=True

)

# Crawling configuration

runconfig = CrawlerRunConfig(

wordcountthreshold=10, # Minimum words per block

excludeexternallinks=True, # Ignore external links

removeoverlayelements=True, # Remove popups/overlays

processiframes=False # Ignore iframes

)

async with AsyncWebCrawler(config=browserconfig) as crawler:

result = await crawler.arun(

url="https://example.com/blog/article",

config=runconfig

)

print(result.fitmarkdown)

Related Articles

dlt Tutorial: Python-First Data Ingestion Pipelines

Membangun Pipeline EL Berbasis Python dengan dlt (data load tool) Sebagian besar tim data menghabiskan waktu yang tidak ...

Dagster Tutorial: Data Orchestration with Software-Defined Assets

Dagster: Orkestrasi Data Modern dengan Software-Defined Assets Dagster adalah orkestrator data yang menyusun pipeline be...

Firecrawl: Web Scraping API for AI and LLM Applications

Firecrawl: Web Scraping API untuk Aplikasi AI dan LLM Firecrawl adalah managed web scraping API yang dirancang khusus un...

Milvus Tutorial: Distributed Vector Database for AI

Tutorial 10: Milvus - Database Vektor Terdistribusi untuk AI Daftar Isi Pendahuluan Prasyarat Arsitektur Milvus [Instala...