Эта статья имеет большой объем содержания и включает в себя широкий спектр знаний. На ее чтение уйдет около 20 минут. Пожалуйста, прочитайте ее терпеливо.
предисловие
Большинство предприятий неотделимы от краулеров, а краулеры — эффективный способ получения данных. Для поисковых систем краулеры незаменимы, для компаний общественного мнения краулеры являются основой, для НЛП краулеры могут получить корпус, для стартапов краулеры могут получить начальный контент. Однако технология сканера сложна, и разные типы сценариев сканирования будут использовать разные технологии. Например, простую статическую страницу можно создать напрямую с помощью HTTP-запроса + HTML-парсера; для динамической страницы необходимо использовать инструменты автоматического тестирования, такие как Puppeteer или Selenium; для веб-сайта с антисканированием необходимо использовать прокси, кодирование и другие технологии; и скоро. Таким образом, предприятия или частные лица, у которых есть требования к масштабируемости сканеров, должны иметь дело с разными типами сканеров одновременно, что приведет к дополнительным затратам на управление из воздуха. В то же время менеджерам поисковых роботов также необходимо иметь дело с изменениями контента веб-сайта, непрерывным добавочным сканированием и сбоями задач. Следовательно, зрелый процесс управления поисковым роботом должен включать в себя систему управления, которая может эффективно решать вышеуказанные проблемы.
Понять, что такое платформа управления поисковым роботом
определение
Платформа управления обходчиками — это универсальная система управления, объединяющая такие модули, как развертывание обходчиков, планирование задач, мониторинг задач и отображение результатов. Платформа управления искателем обычно поддерживает распределенную работу и может работать совместно на нескольких машинах.
Конечно, приведенное выше определение является узким и обычно предназначено для техников, разработчиков или технических менеджеров. Предприятия обычно разрабатывают свои собственные внутренние системы управления поисковыми роботами для решения сложных задач управления поисковыми роботами. Такая система является платформой управления поисковыми роботами в узком смысле, определенном выше.
Универсальная платформа управления поисковым роботом
И что такое универсальная платформа управления поисковым роботом? Возможно, вы слышали о Снайпере (позже преобразованном в Коллекционера Хоу И) и Осьминоге. Первый основан на облачных сервисах, которые могут писать, запускать и отслеживать поисковые роботы в режиме онлайн, и он наиболее близок к узко определенной платформе управления поисковыми роботами в широкой платформе поисковых роботов; последний является популярным коммерческим инструментом сканирования поисковых роботов, который позволяет пользователям Xiaobai перетаскивать и отбросьте Запись, запуск поисковых роботов и экспорт данных. Возможно, вы также видели различных поставщиков услуг агрегации API, таких как Aggregate Data, которая представляет собой платформу, которая может напрямую вызывать интерфейсы веб-сайтов для получения данных. На самом деле это вариант платформы краулера, но он помогает вам завершить процесс написания краулера. процесс. А между ними находится иностранная компания Kimonolab, которая разработала подключаемый модуль Chrome под названием Kimono, который позволяет пользователям визуально нажимать на элементы на странице и генерировать правила парсинга, которые отображаются на их веб-сайте. генерируется, пользователь отправляет задачу, и фон может автоматически получать данные на веб-сайте. Kimono — отличное приложение для сканирования, но, к сожалению, Kimonolab была приобретена компанией по обработке больших данных Plantir, и сейчас ее невозможно протестировать.
В этой статье мы в основном фокусируемся на узко определенной платформе управления искателями, поэтому упомянутая ниже платформа управления искателями относится к узкому определению.
Модуль платформы управления краулером
Ниже приведены модули, задействованные в типичной платформе управления поисковым роботом.
Модули типичной платформы управления поисковым роботом в основном включают следующее:
- Управление задачами: как выполнять и планировать задачи обхода сканера, а также как отслеживать задачи, включая мониторинг журналов и т. д.;
- Управление краулерами: включая развертывание краулеров, развертывание (упаковку или копирование) разработанных краулеров на соответствующий узел, а также настройку краулеров и управление версиями;
- Управление узлами: включая регистрацию и мониторинг узлов (серверов/компьютеров), а также связь между узлами, как контролировать состояние производительности узла и т. д.;
- Внешнее приложение: включает визуальный пользовательский интерфейс, который позволяет пользователям взаимодействовать с внутренним приложением, взаимодействуя с ним.
Конечно, некоторые платформы управления поисковыми роботами могут иметь не только эти модули, но и другие, более практичные функции, такие как настраиваемые правила сканирования, визуальные правила сканирования, пулы прокси, пулы файлов cookie, мониторинг исключений и т. д.
Зачем вам нужна платформа управления поисковым роботом
С помощью платформы управления сканерами разработчики, особенно инженеры, могут легко добавлять сканеры, выполнять задачи и просматривать результаты, не переключаясь между командными строками, что очень подвержено ошибкам. Обычным сценарием является то, что краулер-инженер использовал scrapy и crontab для управления задачами краулера при первоначальном техническом выборе, ему нужно было тщательно выбирать временной интервал запланированных задач, чтобы не загружать ЦП или память сервера, более сложная проблема заключается в том, что ему также необходимо сохранять журналы, созданные с помощью scrapy, в файл. Как только сканер делает ошибку, он должен использовать команды оболочки для просмотра журналов один за другим, чтобы определить причину ошибки. В серьезных случаях это займет целый день; есть еще одна серьезная проблема, инженер-краулер может обнаружить, что объем бизнеса компании увеличивается, ему нужно написать сотни краулеров для удовлетворения бизнес-потребностей компании, а использование scrapy и crontab для управления - это полный кошмар . Бедный краулер-инженер может выбрать подходящую платформу управления краулерами для решения своей проблемы.
Как выбрать подходящую платформу управления поисковым роботом
Когда вы хотите решить вышеупомянутые сложные проблемы, с которыми сталкиваются инженеры поисковых роботов, и вместо этого хотите выбрать подходящую платформу управления поисковыми роботами.
Первый вопрос, на который вы должны ответить: Нужно ли нам разрабатывать систему с нуля (Начать с нуля)? Чтобы ответить на этот вопрос, вы должны сначала ответить на следующие вопросы:
- Достаточно ли сложны наши потребности, чтобы полностью настроить новую систему (например, требуется сложное управление правами)?
- Достаточно ли у нашей команды технических сил для разработки этой системы (например, опытных фронтенд- и бэкенд-разработчиков)?
- Достаточно ли наших временных ресурсов для разработки системы (например, годовой цикл планирования проекта)?
Если ответ на любой из трех вышеприведенных вопросов отрицательный, вам следует рассмотреть возможность использования платформы управления поисковым роботом с открытым исходным кодом, уже представленной на рынке, для удовлетворения ваших потребностей.
На рынке доступны следующие платформы управления сканерами с открытым исходным кодом:
название платформы | Технологии | преимущество | недостаток |
---|---|---|---|
SpiderKeeper | Python Flask | Основанная на scrapyd, версия Scrapyhub с открытым исходным кодом, очень простой пользовательский интерфейс, поддерживает запланированные задачи. | Он может быть слишком кратким, не поддерживает пейджинг, не поддерживает управление узлами и не поддерживает поисковые роботы, кроме скрейпинга. |
Gerapy | Python Django + Vue | Gerapy – это платформа управления поисковым роботом, разработанная Цуй Цинцаем. Она очень проста в установке и развертывании. Она также основана на scrapyd. Она имеет красивый интерфейс пользовательского интерфейса и поддерживает такие функции, как управление узлами, редактирование кода и настраиваемые правила. | Он также не поддерживает поисковые роботы, кроме scrapy, и, согласно отзывам пользователей, в версии 1.0 много ошибок, и ожидается, что версия 2.0 будет в определенной степени улучшена. |
Scrapydweb | Python Flask + Vue | Красивый интерфейс пользовательского интерфейса, встроенный парсер журнала scrapy, множество диаграмм статистики работы задач, управление узлами поддержки, временные задачи, напоминания по электронной почте, мобильный интерфейс, это платформа управления поисковым роботом на основе scrapy с полным набором функций. | Он также не поддерживает поисковые роботы, кроме scrapy, Python Flask является серверной частью и имеет определенные ограничения в производительности. |
Crawlab | Golang + Vue | Не ограничиваясь scrapy, он может запускать сканеры на любом языке и платформе, красивый интерфейс пользовательского интерфейса, естественная поддержка распределенных сканеров, поддержка управления узлами, управление сканерами, управление задачами, синхронизированные задачи, экспорт результатов, статистика данных и другие функции. | Развертывание немного проблематично (но вы можете использовать Docker для развертывания одним щелчком мыши), а последняя версия на данный момент не поддерживает настраиваемые сканеры. |
В целом, SpiderKeeper может быть самой ранней платформой управления краулерами, но ее функции относительно ограничены, хотя у Gerapy есть полные функции и красивый интерфейс, есть много ошибок, которые необходимо устранить. 2.0; Scrapydweb — это относительно полная платформа управления поисковым роботом, но, как и два предыдущих, он основан на scrapyd, поэтому может запускать только сканер scrapy; а Crawlab — очень гибкая платформа управления поисковым роботом, которая может запускать Python, Nodejs, Java. , PHP, Перейти к написанию Краулер Docker имеет полные функции, но его сложнее развернуть, чем первые три, но его можно развернуть одним куском для пользователей Docker (мы поговорим об этом позже).
Поэтому для разработчиков, которые делают ставку на суровых гадов SCRAPY, которые не хотят забрасывать, можно рассмотреть scrapydWeb, для всех типов разработчиков краулеров приоритет должен отдаваться более гибкому краулабу. Конечно, не говоря о том, что CrawLab поддерживает скрап-поддержку недружественно, CrawLab также может хорошо интегрировать Scrapy, будет представлено позже.
Как автор Crawlab, и не хочу возиться с похвалами, так как слойка, автор просто хочет порекомендовать лучший выбор технологии для разработчиков, позволяя разработчикам в соответствии с их собственными потребностями решать, какая платформа управления краулерами.
Введение в Crawlab, платформу управления краулерами
Введение
Crawlab — это распределенная платформа управления поисковыми роботами на основе Golang, которая поддерживает несколько языков программирования, таких как Python, NodeJS, Java, Go, PHP, а также несколько фреймворков для поисковых роботов.
С момента своего запуска в марте этого года Crawlab был хорошо принят энтузиастами и разработчиками поисковых роботов, многие пользователи также заявили, что будут использовать Crawlab для создания собственной платформы поисковых роботов. После нескольких месяцев итераций Crawlab последовательно запустил такие функции, как временные задачи, анализ данных, информация о веб-сайте, настраиваемые поисковые роботы, автоматическое извлечение полей, загрузка результатов и загрузка поисковых роботов, что сделало платформу более практичной и всеобъемлющей, что действительно может помочь пользователю. решает сложную проблему управления поисковым роботом. Теперь на Github уже почти 1000 звезд, а также созданы связанные сообщества (группы WeChat, официальные аккаунты WeChat), а четверть пользователей заявили, что применяли Crawlab для управления корпоративными поисковыми роботами. Видно, что Crawlab интересуется и нравится разработчикам.
Решать проблему
Crawlab в основном решает проблему большого количества проблем с управлением поисковым роботом, таких как необходимость мониторинга сотен веб-сайтов, смешанные проекты scrapy и selenium, которыми нелегко управлять одновременно, а стоимость управления командной строкой очень высока, и легко ошибиться. Crawlab поддерживает любой язык и любую структуру, с планированием задач и мониторингом задач, что позволяет легко эффективно отслеживать и управлять крупномасштабными проектами поисковых роботов.
интерфейс и использование
Ниже приведен скриншот страницы со списком поисковых роботов Crawlab.
Пользователям нужно только загрузить сканер в Crawlab, настроить команду выполнения и нажать кнопку «Выполнить», чтобы выполнить задачу сканера. Задачи обходчика могут выполняться на любом узле. Как видно из приведенного выше рисунка, в Crawlab есть такие модули, как управление узлами, управление поисковым роботом, управление задачами, временные задачи и управление пользователями.
Общая структура
Ниже представлена общая схема архитектуры Crawlab, состоящая из пяти основных частей:
- Главный узел: отвечает за диспетчеризацию задач, API, развертывание поисковых роботов и т. д.;
- Рабочий узел: отвечает за выполнение задач сканера;
- База данных MongoDB: храните ежедневные рабочие данные, такие как узлы, сканеры и задачи;
- База данных Redis: хранит такую информацию, как очереди сообщений о задачах, тактовые импульсы узлов и т. д.
- Внешний клиент: приложение Vue, отвечающее за взаимодействие с внешним интерфейсом и запрашивающее данные из внутреннего интерфейса.
Как использовать Crawlab и его подробные принципы выходят за рамки этой статьи, если вам интересно, вы можете обратиться к ней.домашняя страница гитхабаилиСвязанная документация.
Адрес Github и демо
Установите Crawlab с помощью развертывания Docker.
Докер-образ
Docker — самый удобный и лаконичный способ развертывания Crawlab. Другие методы развертывания включают прямое развертывание, но не рекомендуется для разработчиков, которые хотят быстро создать платформу. Crawlab уже вDockerhubСоответствующие зеркала зарегистрированы на , разработчикам нужно только выполнитьdocker pull tikazyq/crawlab
Команда для загрузки образа Crawlab.
Читатели могут перейти на Dockerhub, чтобы просмотреть образ Crawlab, размер которого составляет менее 300 МБ. адрес:Hubei.docker.com/day/tika вместе/от…
Установить Докер
Чтобы развернуть Crawlab с Docker, вы должны сначала убедиться, что Docker установлен. Пожалуйста, обратитесь к следующим документам для установки.
Операционная система | Документация |
---|---|
Mac | docs.docker.com/docker-foru-… |
Windows | docs.docker.com/docker-foru-… |
Ubuntu | docs.docker.com/install/lin… |
Debian | docs.docker.com/install/lin… |
CentOS | docs.docker.com/install/lin… |
Fedora | docs.docker.com/install/lin… |
Другие дистрибутивы Linux | docs.docker.com/install/lin… |
Установить Docker Compose
Docker Compose — это простой инструмент для запуска кластеров Docker, очень легкий, мы будем использовать Docker Compose для развертывания Crawlab одним щелчком мыши.
На официальном сайте Docker уже есть руководство по установке Docker Compose, нажмитеСсылка на сайтПроверять. Вот краткое введение.
Операционная система | шаги установки |
---|---|
Mac | Docker Desktop для Mac или Docker Toolbox поставляются с ним, его не нужно устанавливать отдельно. |
Windows | Docker Desktop для Windows или Docker Toolbox поставляется вместе с ним, его не нужно устанавливать отдельно. |
Linux | См. команду под таблицей |
Другие варианты | пройти черезpip Установить,pip install docker-compose ,если нетvirtualenv , нужно использоватьsudo
|
Пользователи Linux, пожалуйста, используйте следующую команду для установки.
# 下载 docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose`
# 将 docker-compose 变成执行文件
sudo chmod +x /usr/local/bin/docker-compose
вытащить изображение
Перед извлечением изображения необходимо настроить источник изображения. Потому что в Китае скорость использования оригинального источника изображения не очень высокая, и приходится использовать отечественный ускоритель DockerHub. пожалуйста, создайте/etc/docker/daemon.json
файл, введите следующее.
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
Потом тяни образ, так будет намного быстрее. Конечно, вы также можете использовать другие источники зеркал, вы можете искать в Интернете. Выполните следующую команду, чтобы извлечь образ Crawlab.
docker pull tikazyq/crawlab:latest
На следующем рисунке показан интерфейс командной строки при извлечении изображения.
Запустить Crawlab
Мы будем использовать Docker Compose для запуска Crawlab и зависимых от него баз данных MongoDB и Redis. Сначала нам нужно изменить файл конфигурации yaml Docker Compose.docker-compose.yml
. Этот файл конфигурации определяет службы контейнеров, которые необходимо запустить, и конфигурацию сети. Здесь мы используем тот, который поставляется с Crawlabdocker-compose.yml
.
version: '3.3' # Docker Compose 的版本号(请看后续说明)
services: # 服务
master: # 服务名称
image: tikazyq/crawlab:latest # 服务对应的镜像名称
container_name: master # 服务对应的容器名称
environment: # 这里定义传入的环境变量
CRAWLAB_API_ADDRESS: "localhost:8000" # 前端调用的 API 地址,默认为 localhost:8000
CRAWLAB_SERVER_MASTER: "Y" # 是否为主节点,Y/N
CRAWLAB_MONGO_HOST: "mongo" # MongoDB host,由于在 Docker Compose 里,可以引用服务名称
CRAWLAB_REDIS_ADDRESS: "redis" # Redis host,由于在 Docker Compose 里,可以引用服务名称
ports: # 映射的端口
- "8080:8080" # 前端端口
- "8000:8000" # 后端端口
depends_on: # 依赖的服务
- mongo # MongoDB
- redis # Redis
worker: # 工作节点,与主节点配置类似,不重复写了
image: tikazyq/crawlab:latest
container_name: worker
environment:
CRAWLAB_SERVER_MASTER: "N"
CRAWLAB_MONGO_HOST: "mongo"
CRAWLAB_REDIS_ADDRESS: "redis"
depends_on:
- mongo
- redis
mongo: # MongoDB 服务名称
image: mongo:latest # MongoDB 镜像名称
restart: always # 重启策略为“总是”
ports: # 映射端口
- "27017:27017"
redis: # Redis 服务名称
image: redis:latest # Redis 镜像名称
restart: always # 重启策略为“总是”
ports: # 映射端口
- "6379:6379"
Читатели могут настроить в соответствии со своими требованиямиdocker-compose.yml
. особое вниманиеCRAWLAB_API_ADDRESS
Эта переменная среды, многие начинающие пользователи не могут войти в систему, потому что конфигурация переменной неверна. В большинстве случаев вам не нужно вносить какие-либо изменения в конфигурацию. Пожалуйста, обратитесь кQ&Aответы на часто задаваемые вопросы, а также подробныеДокумент конфигурации переменных средычтобы помочь настроить Crawlab для вашей среды.
Затем выполните следующую команду, чтобы запустить Crawlab. могу добавить один-d
Параметр заставляет Docker Compose работать в фоновом режиме.
docker-compose up
После выполнения вышеуказанной команды Docker Compose извлечет образы MongoDB и Redis, что может занять несколько минут. После завершения извлечения четыре службы будут запущены последовательно, и вы увидите следующее в командной строке.
В нормальных условиях вы должны увидеть, что все четыре службы успешно запущены, и журналы могут быть распечатаны без проблем. Если запуск не удался, свяжитесь с автором (tikazyq1) в WeChat или создайте вопрос на Github.
Если вы запустили Docker Compose локально, вы можете ввести в браузереhttp://localhost:8080
, а затем вы можете увидеть интерфейс входа в систему, если вы запустили Docker Compose на другом компьютере, вам нужно войти в браузереhttp://<your_ip>:8080
чтобы увидеть интерфейс входа,<your_ip>
IP-адрес другого компьютера (убедитесь, что на этом компьютере открыт порт 8080).
Начальное имя пользователя и пароль для входа — admin/admin, вы можете использовать это имя пользователя и пароль для входа в систему. Если ваша переменная средыCRAWLAB_API_ADDRESS
Если он не настроен правильно, вы можете увидеть, что кнопка входа в систему продолжает вращаться по кругу без какого-либо запроса после нажатия входа. В это время, пожалуйста, повторноdocker-compose.yml
установить правильныйCRAWLAB_API_ADDRESS
(будетlocalhost
заменить<your_ip>
),Начать сначалаdocker-compose up
. Затем введите в браузереhttp://<your_ip>:8080
.
После авторизации вы увидите домашнюю страницу Crawlab.
В этой статье в основном рассказывается о том, как создать платформу управления поисковым роботом Crawlab, поэтому в ней не будет подробно рассказано, как использовать Crawlab (можно создать еще одну статью для подробного ознакомления, те, кто заинтересован, могут обратить внимание). Если вы запутались, см.Связанная документациячтобы научиться им пользоваться. При этом вы также можете добавить WeChat автора (tikazyq1) и указать Crawlab, автор потянет вас в группу обсуждения, где вы сможете ответить на свои вопросы.
Как интегрировать сканеры, такие как Scrapy, в Crawlab
Как мы все знаем, Scrapy — это очень популярный фреймворк для поисковых роботов, а его гибкая структура, высокий уровень параллелизма, простота использования и масштабируемость широко используются многими разработчиками и предприятиями. Почти все платформы управления сканерами на рынке поддерживают сканеры Scrapy, и Crawlab не является исключением, но Crawlab может запускать и другие сканеры, такие как puppeteer и selenium. Далее будет рассказано, как запустить сканер Scrapy в Crawlab.
Crawlab — основной принцип работы краулера
Принцип запуска сканера Crawlab очень прост, на самом деле это команда оболочки. Пользователь вводит команду оболочки для запуска искателя в искателе, напримерscrapy crawl some_spider
, исполнитель Crawlab прочитает эту команду и выполнит ее прямо в оболочке. Поэтому каждый раз, когда вы запускаете задачу сканера, вы выполняете команду оболочки (конечно, реальная ситуация намного сложнее, чем эта, вы можете обратиться к ней, если вам интересноофициальная документация). Crawlab поддерживает отображение и экспорт результатов сканирования, но для этого требуется немного больше работы.
Написание конвейеров
Чтобы интегрировать сканеры scrapy, нужно сохранить данные, просканированные сканерами, в базе данных Crawlab, а затем связать их с идентификаторами задач. Каждый раз, когда выполняется задача сканера, идентификатор задачи будет передаваться программе сканера через переменные среды, поэтому все, что нам нужно сделать, — это сохранить идентификатор задачи и результат в базе данных (Crawlab сейчас поддерживает только MongoDB и будет разрабатывать MySQL, SQL Server, Postgres позже и другие реляционные базы данных, пользователи, которым это необходимо, могут обратить внимание).
В Scrapy нам нужно написать логику хранения. Схематический код выглядит следующим образом:
# 引入相关的库,pymongo 是标准连接 MongoDB 的库
import os
from pymongo import MongoClient
# MongoDB 配置参数
MONGO_HOST = '192.168.99.100'
MONGO_PORT = 27017
MONGO_DB = 'crawlab_test'
class JuejinPipeline(object):
mongo = MongoClient(host=MONGO_HOST, port=MONGO_PORT) # mongo 连接实例
db = mongo[MONGO_DB] # 数据库实例
col_name = os.environ.get('CRAWLAB_COLLECTION') # 集合名称,通过环境变量 CRAWLAB_COLLECTION 传过来
# 如果 CRAWLAB_COLLECTION 不存在,则默认集合名称为 test
if not col_name:
col_name = 'test'
col = db[col_name] # 集合实例
# 每一个传入 item 会调用的函数,参数分别为 item 和 spider
def process_item(self, item, spider):
item['task_id'] = os.environ.get('CRAWLAB_TASK_ID') # 将 task_id 设置为环境变量传过来的任务 ID
self.col.save(item) # 保存 item 在数据库中
return item
В то же время вам также необходимоitems.py
Присоединяйсяtask_id
поле, значение гарантированно будет присвоено (это важно).
Загрузите и настройте сканер
Перед запуском сканера необходимо загрузить файл сканера на главный узел. Действуйте следующим образом:
- Упакуйте файл сканера в zip (обратите внимание, убедитесь, что вы упаковали его прямо в корневой каталог);
- Нажмите «Сканер» на боковой панели, чтобы перейти к списку сканеров, нажмите кнопку «Добавить сканер» и выберите «Пользовательский сканер»;
- Нажмите кнопку «Загрузить» и выберите zip-файл, который вы только что запаковали.
- После успешной загрузки вновь добавленный пользовательский поисковый робот появится в списке поисковых роботов, поэтому, даже если загрузка прошла успешно.
Вы можете щелкнуть вкладку «Файл» в сведениях об искателе, выбрать файл и отредактировать код в файле.Далее необходимо ввести команду выполнения оболочки сканера в поле «Команда выполнения» на вкладке «Обзор». В образ Docker от Crawlab встроена функция scrapy, поэтому сканеры scrapy можно запускать напрямую. Командаscrapy crawl <some_spider>
. Нажмите кнопку «Сохранить», чтобы сохранить конфигурацию сканера.
Запустить задачу сканера
Затем пришло время запустить задачу сканера. На самом деле это очень просто, нажмите кнопку «Выполнить» на вкладке «Обзор», и задание сканера запустится. Если в журнале указано, что команда scrapy не может быть найдена, вы можетеscrapy
изменить на абсолютный путь/usr/local/bin/scrapy
, он будет работать успешно.
Статус выполнения задачи будет отображаться на странице "Задачи" или в "Обзоре" краулера и обновляться каждые 5 секунд, проверить можно здесь. А на вкладке «Результаты» сканера вы можете предварительно просмотреть детали результатов, а также экспортировать данные в файл CSV.
Создавайте рабочие процессы непрерывной интеграции (CI)
Для бизнеса разработка программного обеспечения, как правило, является автоматизированным процессом. Он пройдет этапы требований, разработки, развертывания, тестирования и запуска. Этот процесс, как правило, итеративный, и его необходимо постоянно обновлять и выпускать.
Возьмем, к примеру, краулер: вы запустили краулер, который периодически сканирует данные сайта. Но вдруг в один прекрасный день вы обнаружите, что данные не могут быть собраны.Вы быстро определяете причину и обнаруживаете, что веб-сайт был изменен.Вам нужно изменить правила сканирования сканера, чтобы справиться с ревизией веб-сайта. Короче говоря, вам нужно опубликовать обновление кода. Самое быстрое, что можно сделать, это изменить код прямо онлайн. Но это очень опасно: во-первых, вы не можете протестировать свой обновленный код, вы можете только проверить успешность парсинга, постоянно корректируя онлайн-код; во-вторых, вы не можете зафиксировать это изменение, и если что-то пойдет не так позже, вы будете очень это изменение может быть проигнорировано, что приведет к ошибкам. Все, что вам нужно сделать, это управлять кодом вашего сканера с помощью инструмента управления версиями. У нас есть много инструментов управления версиями, наиболее часто используемыми являются git и subversion.Платформы управления версиями включают Gitlab, Bitbucket и самодельные репозитории Git.
Когда мы обновляем код, нам нужно опубликовать обновленный код на онлайн-сервере. В настоящее время вам необходимо написать собственные сценарии развертывания или, что более удобно, использовать Jenkins в качестве платформы управления непрерывной интеграцией. Jenkins — это платформа непрерывной интеграции, которая может обновлять код развертывания, получая репозиторий, Это очень практичный инструмент, который используется на многих предприятиях. На рисунке ниже показан пример применения сканера Crawlab к рабочему процессу непрерывной интеграции.
Есть два способа создать или обновить сканер в Crawlab:
- Загрузите упакованный zip-файл;
- Путем изменения каталога в главном узле
CRAWLAB_SPIDER_PATH
файл сканера в формате .
Делаем непрерывную интеграцию для второго способа. Действуйте следующим образом:
- Создайте репозиторий кода с помощью Gitlab или других платформ;
- Создайте проект в Jenkins и укажите источник кода в проекте на созданный ранее репозиторий;
- Напишите рабочий процесс в проекте Jenkins и укажите адрес релиза на сайте Crawlab.
CRAWLAB_SPIDER_PATH
, если это Docker, обратите внимание на монтирование адреса к файловой системе хоста; - Работа проекта Jenkins может быть написана напрямую, или вы можете использовать Jenkinsfile, вы можете проверить соответствующую информацию для деталей;
- Таким образом, после отправки каждого обновления кода в репозиторий кода Jenkins будет публиковать обновленный код в Crawlab, а главный узел Crawlab будет синхронизировать код сканера с рабочим узлом для сканирования.
Суммировать
В этой статье в основном представлено определение платформы управления искателями, как выбрать платформу управления искателями, основное внимание уделяется тому, как создать платформу управления искателями с открытым исходным кодом Crawlab, а также рассказывается о том, как интегрировать сканеры scrapy и как создать рабочий процесс непрерывной интеграции. . Есть много вещей, которые не были рассмотрены в этой статье, в том числе принципы и детали архитектуры Crawlab, как использовать Crawlab, как писать масштабные сканеры, как использовать Jenkins и многое другое. Это содержание может быть опубликовано в других статьях, пожалуйста, обратите больше внимания на заинтересованных читателей. Кроме того, в Crawlab все еще есть области, требующие улучшения, такие как аномальный мониторинг (нулевое значение, нулевое значение), настраиваемый поисковый робот, визуальный обход, централизованный сбор журналов и так далее. Эти функции будут разработаны и выпущены в будущем, обратите на них больше внимания.
Я надеюсь, что эта статья будет полезна для вашей работы и учебы.Если у вас есть какие-либо вопросы, пожалуйста, добавьте WeChat tikazyq1 автора, или оставьте сообщение внизу, чтобы задать вопросы, и автор постарается ответить. Спасибо!