Асинхронный веб-скрейпинг с Crawl4AI: Эффективный сбор данных для LLM
Узнайте, как использовать Crawl4AI для эффективного асинхронного сбора веб-данных без запуска браузера, идеально подходящего для LLM и масштабируемых решений.
Использование Crawl4AI для асинхронного извлечения веб-данных
Crawl4AI — современный веб-краулер на Python, который позволяет асинхронно и эффективно извлекать структурированные данные. В этом руководстве показано, как использовать Crawl4AI в Google Colab для парсинга страниц без использования тяжелых безголовых браузеров. Благодаря asyncio для параллелизма, httpx для HTTP-запросов и AsyncHTTPCrawlerStrategy из Crawl4AI можно обрабатывать сложный HTML через JsonCssExtractionStrategy и получать чистые JSON-данные.
Установка зависимостей
Для начала установите необходимые пакеты:
!pip install -U crawl4ai httpxЭто установит Crawl4AI и HTTPX — высокопроизводительный HTTP-клиент, позволяющий выполнять легковесный асинхронный веб-скрейпинг прямо в ноутбуке.
Импорт необходимых модулей
Импортируем асинхронные модули Python и компоненты Crawl4AI:
import asyncio, json, pandas as pd
from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, HTTPCrawlerConfig
from crawl4ai.async_crawler_strategy import AsyncHTTPCrawlerStrategy
from crawl4ai.extraction_strategy import JsonCssExtractionStrategyЭти модули отвечают за параллельность, разбор JSON, хранение данных и настройку краулинга.
Настройка HTTP-краулера
Задаем конфигурацию HTTP-запросов для оптимизации краулинга:
http_cfg = HTTPCrawlerConfig(
method="GET",
headers={
"User-Agent": "crawl4ai-bot/1.0",
"Accept-Encoding": "gzip, deflate"
},
follow_redirects=True,
verify_ssl=True
)
crawler_strategy = AsyncHTTPCrawlerStrategy(browser_config=http_cfg)Эта конфигурация задает GET-запросы с поддержкой gzip/deflate, пользовательским агентом, автоматическим перенаправлением и проверкой SSL, без запуска браузера.
Определение схемы извлечения
Создаем JSON-CSS схему, которая сопоставляет структуру HTML с JSON-полями:
schema = {
"name": "Quotes",
"baseSelector": "div.quote",
"fields": [
{"name": "quote", "selector": "span.text", "type": "text"},
{"name": "author", "selector": "small.author", "type": "text"},
{"name": "tags", "selector": "div.tags a.tag", "type": "text"}
]
}
extraction_strategy = JsonCssExtractionStrategy(schema, verbose=False)
run_cfg = CrawlerRunConfig(extraction_strategy=extraction_strategy)Эта схема выбирает блоки цитат и извлекает текст цитаты, автора и теги.
Асинхронная функция краулинга
Определяем асинхронную функцию для обхода страниц и сбора данных:
async def crawl_quotes_http(max_pages=5):
all_items = []
async with AsyncWebCrawler(crawler_strategy=crawler_strategy) as crawler:
for p in range(1, max_pages+1):
url = f"https://quotes.toscrape.com/page/{p}/"
try:
res = await crawler.arun(url=url, config=run_cfg)
except Exception as e:
print(f" Page {p} failed outright: {e}")
continue
if not res.extracted_content:
print(f" Page {p} returned no content, skipping")
continue
try:
items = json.loads(res.extracted_content)
except Exception as e:
print(f" Page {p} JSON‑parse error: {e}")
continue
print(f" Page {p}: {len(items)} quotes")
all_items.extend(items)
return pd.DataFrame(all_items)Функция асинхронно загружает страницы, аккуратно обрабатывает ошибки, парсит JSON и собирает результаты в DataFrame pandas.
Запуск краулера и просмотр результатов
Запускаем краулер и выводим первые записи:
df = asyncio.get_event_loop().run_until_complete(crawl_quotes_http(max_pages=3))
df.head()Это выполняет сбор данных с трех страниц и показывает первые строки таблицы.
Преимущества Crawl4AI
Унифицированный API Crawl4AI позволяет легко переключаться между браузерным и HTTP-режимами без изменения логики извлечения. Встроенная обработка ошибок и декларативные схемы делают его масштабируемым и удобным для ETЛ-процессов, анализа данных и подачи чистых структурированных данных в LLM. Легковесная HTTP-стратегия улучшает производительность и экономит ресурсы по сравнению с безголовыми браузерами.
Такой подход позволяет быстро создавать автоматизированные пайплайны для извлечения данных прямо в ноутбуках, что идеально подходит для ML и инженерии данных.
Switch Language
Read this article in English