Skip to content

tgeruzov/Async-Crawler-Dashboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🕷️ Advanced Async Python Crawler

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.

🛠 Подробное руководство по эксплуатации

1. Подготовка окружения

# Клонирование репозитория
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

2. Запуск парсера (Crawler)

Парсер принимает аргументы командной строки, которые имеют приоритет над файлом конфигурации.

Примеры запуска:

  • Стандартный запуск: 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 конфигу

3. Запуск мониторинга (Dashboard)

Дашборд позволяет следить за процессом, не заглядывая в логи терминала.

streamlit run dashboard.py

После запуска откройте http://localhost:8501 в вашем браузере.


🤖 Соблюдение robots.txt и этика

Парсер автоматически следует правилам robots.txt:

  1. Проверка прав: Скрипт не заходит в разделы, помеченные как Disallow.
  2. Соблюдение задержки: Если указан Crawl-delay, бот замедляется автоматически.
  3. Идентификация: Вы можете сменить User-Agent в настройках, чтобы быть прозрачными для владельцев сайта.

⚙️ Тонкая настройка (config.yaml)

Вы можете создать файл 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.

About

Высокопроизводительный асинхронный веб-парсер на Python с поддержкой Sitemap, рендерингом JS (Playwright) и дашбордом в реальном времени на Streamlit.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages