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

OSCHINA-MIRROR/tikazyq-crawlab

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README-zh.md 21 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 04:31 9d62114

Crawlab

Crawlab — это основанная на Golang распределённая платформа для управления краулерами, поддерживающая Python, NodeJS, Go, Java и PHP, а также различные фреймворки для краулинга.

Посмотреть демонстрацию | Документация

Установка

Существует три способа установки:

  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, чтобы увидеть интерфейс.

docker-compose up

Подробности установки с помощью Docker см. в соответствующей документации.

Прямая установка

См. соответствующую документацию. Задачи журнала

Задачи расписания

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

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

Уведомления о сообщениях

Архитектура

Архитектура Crawlab включает в себя главный узел (Master Node) и несколько рабочих узлов (Worker Node), а также Redis и MongoDB, которые отвечают за связь и хранение данных.

Передняя часть приложения отправляет запрос главному узлу для получения данных, главный узел использует MongoDB и Redis для выполнения задач планирования и развёртывания. После получения задачи рабочий узел начинает выполнять задачу по сканированию и сохраняет результаты в MongoDB. По сравнению с версией v0.3.0 архитектура Crawlab была упрощена: из неё был исключён ненужный модуль мониторинга узлов Flower, мониторинг узлов теперь осуществляется главным образом через Redis.

Главный узел

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

Основные функции главного узла:

  • планирование задач сканирования;
  • управление и связь с рабочими узлами;
  • развёртывание задач сканирования;
  • передняя часть и API-сервисы;
  • выполнение задач (главный узел можно рассматривать как рабочий узел).

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

Рабочий узел

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

MongoDB

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

Redis

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

Передняя часть

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

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

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

Интеграция Scrapy

В settings.py найдите ITEM_PIPELINES (переменная типа dict), добавьте следующее содержимое.

ITEM_PIPELINES = {
    'crawlab.pipelines.CrawlabMongoPipeline': 888,
}

Затем запустите сканер Scrapy, после завершения работы вы должны увидеть результаты сбора в Детали задачи — Результаты.

Универсальный сканер Python

Добавьте следующий код в часть сохранения результатов вашего сканера.

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

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

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

Затем запустите сканер, после завершения работы вы также должны увидеть результаты сбора в Детали задачи — Результаты.

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

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

В программе сканирования необходимо присвоить значение CRAWLAB_TASK_ID переменной task_id, которую можно сохранить в коллекции CRAWLAB_COLLECTION в MongoDB. Таким образом, Crawlab знает, как связать задачу сканирования с данными сканирования. В настоящее время Crawlab поддерживает только MongoDB.

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

Сейчас существует несколько платформ управления сканерами, так зачем использовать Crawlab?

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

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

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

Вопросы и ответы

1. Почему я не могу получить доступ к http://localhost:8080?

Если вы используете Docker для развёртывания, проверьте, используете ли вы Docker Machine, в этом случае вам нужно ввести адрес http://192.168.99.100:8080.

Кроме того, убедитесь, что вы использовали -p 8080:8080, чтобы сопоставить порт, и проверьте, открыт ли порт 8080 на хост-машине.

2. Я вижу страницу входа, но когда я нажимаю кнопку входа, она продолжает вращаться?

В большинстве случаев вы, вероятно, неправильно настроили переменную среды CRAWLAB_API_ADDRESS. Эта переменная сообщает передней части, какой адрес использовать для запроса данных API, поэтому вам необходимо установить его равным IP-адресу хоста + порту, например 192.168.0.1:8000. Затем перезапустите контейнер, в браузере введите IP-адрес хоста и порт, и вы сможете успешно войти в систему.

Обратите внимание, что 8080 — это порт для внешнего интерфейса, а 8000 — порт для внутреннего интерфейса. В браузере вам нужно ввести только адрес внешнего интерфейса. Не забудьте об этом различии.

3. На странице со списком пауков есть несколько неизвестных пауков. Что это такое?

Это демонстрационные пауки. Если вам нужно добавить собственного паука, упакуйте файл с вашим пауком в zip-файл, затем нажмите кнопку «Добавить паука» на странице пауков и загрузите его.

Обратите внимание, что Crawlab будет использовать имя файла как имя паука. Вы можете изменить его позже. Кроме того, не рекомендуется называть zip-файлы на китайском языке, так как это может привести к сбою загрузки.

Связанные статьи

Примечание: версия v0.3.0 теперь основана на версии Golang вместо версии Python на основе Celery. Для развёртывания обратитесь к документации.

Участники

Сообщество & спонсорство

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

Опубликовать ( 0 )

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

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