1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/tikazyq-crawlab

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Crawlab

中文 | English

Installation | Run | Screenshot | Architecture | Integration | Compare | Community & Sponsorship | CHANGELOG | Disclaimer

Golang-based распределённая платформа управления веб-краулерами, поддерживающая различные языки, включая Python, NodeJS, Go, Java, PHP и различные фреймворки веб-краулеров, такие как Scrapy, Puppeteer, Selenium.

Демо | Документация

Установка

Три метода:

  1. Docker (рекомендуется)
  2. Прямая установка (проверьте внутреннее ядро)
  3. Kubernetes (развёртывание на нескольких узлах)

Предварительные требования (Docker)

  • Docker 18.03+
  • Redis 5.x+
  • MongoDB 3.6+
  • Docker Compose 1.24+ (необязательно, но рекомендуется)

Предварительные требования (прямая установка)

  • Go 1.12+
  • Node 8.12+
  • Redis 5.x+
  • MongoDB 3.6+

Быстрый старт

Откройте командную строку и выполните команду ниже. Убедитесь, что вы заранее установили docker-compose.

git clone https://github.com/crawlab-team/crawlab
cd crawlab
docker-compose up -d

Далее вы можете ознакомиться с файлом docker-compose.yml (с подробными параметрами конфигурации) и документацией (на китайском языке).

Запуск

Docker

Используйте docker-compose, чтобы запустить одним щелчком мыши. Таким образом, вам даже не придётся настраивать базы данных MongoDB и Redis. Создайте файл с именем docker-compose.yml и введите код ниже.

version: '3.3'
services:
  master: 
    image: tikazyq/crawlab:latest
    container_name: master
    environment:
      CRAWLAB_SERVER_MASTER: "Y"
      CRAWLAB_MONGO_HOST: "mongo"
      CRAWLAB_REDIS_ADDRESS: "redis"
    ports:    
      - "8080:8080"
    depends_on:
      - mongo
      - redis
  mongo:
    image: mongo:latest
    restart: always
    ports:
      - "27017:27017"
  redis:
    image: redis:latest
    restart: always
    ports:
      - "6379:6379"

Затем выполните команду ниже, и главный узел Crawlab + MongoDB + Redis запустится. Откройте браузер и введите http://localhost:8080, чтобы увидеть интерфейс UI.

docker-compose up

Для получения подробной информации о развёртывании Docker обратитесь к соответствующей документации. ### Домашняя страница

Список узлов

Список узлов сети

Сеть узлов

Список пауков

Обзор паука

Аналитика паука

Редактирование файла паука

Журнал задач

Результаты задач

Cron Job

Установка языка

Установка зависимостей

Уведомления

Архитектура

Архитектура Crawlab состоит из главного узла и множества рабочих узлов, а также баз данных Redis и MongoDB, которые в основном предназначены для связи между узлами и хранения данных.

Приложение внешнего интерфейса отправляет запросы главному узлу, который назначает задачи и развёртывает пауков через MongoDB и Redis. Когда рабочий узел получает задачу, он начинает выполнять задачу сканирования, и сохраняет результаты в MongoDB. Архитектура гораздо более лаконична по сравнению с версиями до v0.3.0. Из неё был удалён ненужный модуль Flower, который предлагал услуги мониторинга узлов. Теперь они выполняются Redis.

Главный узел

Главный узел является ядром архитектуры Crawlab. Это центральная система управления Crawlab.

Главный узел предлагает следующие услуги:

  1. Координация задач сканирования;
  2. Управление рабочими узлами и связь с ними;
  3. Развёртывание пауков;
  4. Услуги внешнего интерфейса и API;
  5. Выполнение задач (можно рассматривать главный узел как рабочий узел).

Главный узел взаимодействует с приложением внешнего интерфейса и отправляет задачи сканирования рабочим узлам. В то же время главный узел синхронизирует (развёртывает) пауков на рабочие узлы через Redis и MongoDB GridFS.

Рабочий узел

Основная функция рабочих узлов — выполнение задач сканирования и сохранение результатов и журналов, а также взаимодействие с главным узлом через Redis PubSub. Увеличивая количество рабочих узлов, Crawlab может масштабироваться горизонтально, и разные задачи сканирования могут быть назначены разным узлам для выполнения.

MongoDB

MongoDB — это операционная база данных Crawlab. Она хранит данные об узлах, пауках, задачах, расписаниях и т. д. Файловая система MongoDB GridFS является средством, с помощью которого главный узел сохраняет файлы пауков и синхронизируется с рабочими узлами.

Redis

Redis — очень популярная база данных типа «ключ-значение». Он предлагает услуги связи между узлами в Crawlab. Например, узлы будут выполнять HSET, чтобы установить свою информацию в хэш-список с именем nodes в Redis, и главный узел будет идентифицировать онлайн-узлы в соответствии с хэш-списком.

Внешний интерфейс

Внешний интерфейс представляет собой SPA на основе Vue-Element-Admin. Он повторно использовал многие компоненты Element-UI для поддержки соответствующего отображения.

Интеграция с другими фреймворками

Crawlab SDK предоставляет некоторые вспомогательные методы, которые упрощают интеграцию ваших пауков в Crawlab, например, сохранение результатов.

⚠️Примечание: убедитесь, что вы уже установили crawlab-sdk с помощью pip.

Scrapy

В settings.py в вашем проекте Scrapy найдите переменную с именем ITEM_PIPELINES (переменная dict). Добавьте содержимое ниже. ### Общий паук Python

Добавьте приведённый ниже контент в файлы пауков, чтобы сохранить результаты.

# импортируем метод сохранения результатов
from crawlab import save_item

# это запись результата, должна быть типа dict
result = {'name': 'crawlab'}

# вызываем метод сохранения результата
save_item(result)

Затем запустите паука. После того как он завершит работу, вы сможете увидеть результаты парсинга в разделе Задача детализации -> Результат

Другие фреймворки / языки

Задача сканирования фактически выполняется через командную строку. Идентификатор задачи будет передан процессу задачи сканирования в виде переменной среды с именем CRAWLAB_TASK_ID. Таким образом, данные можно связать с задачей. Кроме того, другая переменная среды CRAWLAB_COLLECTION передаётся Crawlab в качестве имени коллекции для хранения данных результатов.

Сравнение с другими фреймворками

Существуют существующие платформы управления пауками. Зачем использовать Crawlab?

Причина в том, что большинство существующих платформ зависят от Scrapyd, который ограничивает выбор только Python и Scrapy. Конечно, Scrapy — отличный фреймворк для веб-сканирования, но он не может делать всё.

Crawlab прост в использовании, достаточно универсален, чтобы адаптировать пауков на любом языке и в любой среде. У него также есть красивый интерфейс для пользователей, позволяющий гораздо проще управлять пауками.

Фреймворк Технология Плюсы Минусы Статистика Github
Crawlab Golang + Vue Не ограничивается Scrapy, доступен для всех языков программирования и фреймворков. Красивый интерфейс UI. Естественно поддерживает распределённых пауков. Поддерживает управление пауками, управление задачами, cron job, экспорт результатов, аналитику, уведомления, настраиваемые пауки, онлайн-редактор кода и т. д. Пока не поддерживает управление версиями пауков
ScrapydWeb Python Flask + Vue Красивый интерфейс UI, встроенный анализатор журналов Scrapy, статистика и графики выполнения задач, поддержка управления узлами, cron job, уведомление по почте, мобильное приложение. Полнофункциональная платформа управления пауками. Не поддерживает пауков кроме Scrapy. Ограниченная производительность из-за бэкенда Python Flask.
Gerapy Python Django + Vue Gerapy создан гуру веб-краулеров Germey Cui. Простая установка и развёртывание. Красивый интерфейс UI. Поддержка управления узлами, редактирования кода, настраиваемых правил сканирования и т.д. Опять же не поддерживает пауков кроме Scrapy. Множество ошибок на основе отзывов пользователей в версии 1.0. С нетерпением ждём улучшения в версии 2.0
SpiderKeeper Python Flask Открытый исходный код Scrapyhub. Краткий и простой интерфейс UI. Поддерживает cron job. Возможно, слишком упрощён, не поддерживает разбиение на страницы, не поддерживает управление узлами, не поддерживает пауков кроме Scrapy.

Авторы

## Сообщество и спонсорская поддержка

Если вы считаете, что Crawlab может быть полезен в вашей повседневной работе или в компании, пожалуйста, добавьте автора в Wechat, отметив «Crawlab», чтобы присоединиться к группе обсуждения. Или отсканируйте QR-код Alipay ниже, чтобы вознаградить нас и помочь улучшить наше командное программное обеспечение или купить кофе.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Crawlab — это распределённая платформа для управления краулерами, разработанная с использованием Golang. Она поддерживает множество языков программирования, таких как Python, NodeJS, Go, Java и PHP, а также различные фреймворки для краулеров. Развернуть Свернуть
BSD-3-Clause
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/tikazyq-crawlab.git
git@api.gitlife.ru:oschina-mirror/tikazyq-crawlab.git
oschina-mirror
tikazyq-crawlab
tikazyq-crawlab
master