Advanced Async Python Crawler — профессиональный инструмент для высокопроизводительного сбора данных. Он сочетает скорость асинхронных запросов, возможности браузерного рендеринга и интеллектуальный анализ контента.
- Async Engine: Использование
aiohttpдля параллельной обработки сотен страниц. - Sitemap Support: Рекурсивный обход
sitemap.xmlдля нахождения всех скрытых страниц. - JS Rendering: Интеграция с Playwright для парсинга SPA (React, Vue, Angular).
- Smart Extraction: Извлечение чистого текста без рекламы и меню через
Trafilatura. - Live Dashboard: Визуализация прогресса и статистики в реальном времени.
- Reliability: Система повторных попыток (retries) и сохранение состояния в SQLite.
# Клонирование репозитория
git clone https://github.com/tgeruzov/Async-Crawler-Dashboard.git
cd advanced-python-crawler
# Настройка виртуального окружения
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установка зависимостей и браузера
pip install -r requirements.txt
playwright install chromium
Парсер принимает аргументы командной строки, которые имеют приоритет над файлом конфигурации.
Примеры запуска:
- Стандартный запуск:
python advanced_crawler.py --start https://example.com - С рендерингом JavaScript (если сайт пустой без JS):
python advanced_crawler.py --start https://example.com --playwright - Парсинг без карты сайта (только по внутренним ссылкам):
python advanced_crawler.py --start https://example.com --no-sitemap
Доступные флаги:
| Флаг | Описание |
|---|---|
--start / -s |
Стартовый URL (обязательно) |
--playwright |
Включить использование браузера Chrome |
--no-sitemap |
Игнорировать поиск sitemap.xml |
--config / -c |
Путь к кастомному YAML конфигу |
Дашборд позволяет следить за процессом, не заглядывая в логи терминала.
streamlit run dashboard.py
После запуска откройте http://localhost:8501 в вашем браузере.
Парсер автоматически следует правилам robots.txt:
- Проверка прав: Скрипт не заходит в разделы, помеченные как
Disallow. - Соблюдение задержки: Если указан
Crawl-delay, бот замедляется автоматически. - Идентификация: Вы можете сменить
User-Agentв настройках, чтобы быть прозрачными для владельцев сайта.
Вы можете создать файл config.yaml для постоянных настроек:
user_agent: "MyCrawlerBot/1.0"
concurrency: 10 # Количество одновременных запросов
delay: 0.5 # Пауза между запросами (в сек)
max_pages: 1000 # Лимит страниц (0 - без лимита)
use_playwright: false # Глобальное включение JS-рендеринга
check_sitemap: true # Искать ли карту сайта
output_dir: "data" # Куда сохранять файлы
Результаты сохраняются в папку data/:
output.jsonl: Основной файл. Каждая строка — это JSON с заголовком, текстом и метаданными страницы.compact.csv: Удобная таблица для Excel (список URL и длина текстов).crawler_state.db: База данных SQLite. Если вы прервете парсинг и запустите его снова, скрипт продолжит с места остановки, не скачивая старые страницы заново.
Проект распространяется под лицензией MIT.