爬虫管理平台 Crawlab v0.4.4 发布(在微信或钉钉上就能够监控爬虫任务)

前言

Crawlab 是一个基于 Golang 的分布式通用爬虫管理平台,能支持支持 Python、NodeJS、Java、Go、PHP 等多种编程语言以及 Scrapy、Selenium、Puppeer 等多种爬虫框架。Crawlab 的可配置爬虫又可让你在不到 3 分钟内开发好一个简单的可配置爬虫。Crawlab 的宗旨是让爬虫变得简单。目前 Crawlab 已经有超过 4k Github Stars 以及近 10k Dockerhub Pulls,是增加最快也是最受欢迎的爬虫管理平台。下图是各个开源爬虫管理平台的 Github Star 增加曲线,其中红色的是 Crawlab。能够看到,虽然 Crawlab 是比较新的项目,但受欢迎程度在持续增加。html

目前 Crawlab 的功能包括但不限于:任务监控、节点管理、爬虫管理、日志管理、定时任务、数据分析、可配置爬虫、在线文件编辑、依赖安装等等。虽然这些功能相较于其余爬虫管理平台已是比较完善了,但对于企业级的应用却还有必定的差距,例如:缺乏消息通知功能、没有异常监控功能、长任务支持不友好等等。所以,为了朝企业级应用更进一步,咱们在本次的 v0.4.4 版本中推出了 消息通知 功能,可以让用户第一时间经过钉钉、企业微信、邮件收到任务报错或完成的消息,进一步加强任务监控能力。另外,为了让爬虫管理和集成变得更简单,咱们在本次发布中还推出了 Crawlab SDK,让用户可以经过 CLI 命令行工具 轻松上传自定义爬虫和查看数据,同时也加强了 Scrapy 爬虫和 Python 通常爬虫的集成支持。其余优化包括加强的在线文件编辑和定时任务可视化编辑。前端

对爬虫管理平台不了解的同窗,能够参考《如何快速搭建实用的爬虫管理平台》。对于 Crawlab 不了解的同窗,请参考《Crawlab 官方文档》python

新增功能 1: 消息通知

监控报警是一个企业运维中不可或缺的一部分,服务器宕机、CPU 过载、做业失败,都应该第一时间让运维开发人员知道。若是一个大型互联网企业由于服务器宕掉,而没有当即处理的话,极可能致使巨大的损失。所以,消息通知是一个很是重要的功能,爬虫管理也不例外。当爬虫任务挂了,或者出现错误,爬虫工程师想第一时间了解状况,并及时做出响应和处理。若是没有消息通知,这是没法完成的。而一般的消息通知渠道包括:邮件、短信、电话、手机推送。在本次的更新中,咱们实现了其中两个:邮件和手机推送(钉钉、企业微信)。git

下面有消息通知的效果图。github

手机推送

邮件内容

钉钉内容

企业微信内容

触发模式

Crawlab 支持 3 种消息通知触发模式:数据库

  1. 当任务运行结束时触发
  2. 当任务发生错误时触发
  3. 从不触发

您能够在 设置 页面中配置您的通知渠道和触发模式。编程

配置消息通知

消息通知的配置很是简单,关于如何配置消息通知请参照 《官方文档》。若是有疑问,请加做者微信 tikazyq1 拉群讨论。后端

新增功能 2: Crawlab SDK

痛点 1: 上传爬虫很痛苦

Crawlab 目前支持访问的媒介只是 Web 界面,用户必须经过到 Web 界面上进行按钮点击、输入等操做来完成与 Crawlab 的交互。这样作有个严重的问题:每次上传 自定义爬虫 必需要手动将爬虫文件 Zip 打包。这样作费时费力,并且对于 Scrapy 爬虫, Crawlab 要求在根目录下打包才能工做,这样很容易致使错误。这一方面说明 Crawlab 对 Scrapy 爬虫的支持不够,另一个方面说明流程须要优化。api

痛点 2: 集成爬虫很心累

不少 Crawlab 的用户都反馈说不知道如何将爬虫抓取的结果集成到 Crawlab 中。这是由于咱们给出的解决方案太过于复杂(要求存入同一个数据库、须要获取环境变量、须要指定 task_id),初学者用户很难在短期内理解如何操做。bash

解决办法: Crawlab SDK

基于上面的两个痛点,咱们开发了 Crawlab SDK,一个简化爬虫上传、集成流程的工具。目前 Crawlab SDK 只支持了 Python,其余语言例如 Golang、Node.js、Java 咱们会在后面陆续发布。

安装 Crawlab SDK

安装 Crawlab SDK 很是简单,只须要保证您安装了 pip 包管理工具,而后执行如下命令。

pip install crawlab-sdk

CLI 命令行工具

安装好 Crawlab SDK 以后,您就能够在命令行中使用 crawlab 命令了。

如何使用 CLI 和利用 CLI 上传爬虫,您能够参考 《官方文档》

Utility Tool

Crawlab SDKUtility Tool 能够帮助用户更好的集成爬虫,例如保存爬虫数据等等。

Scrapy 集成

settings.py 中找到 ITEM_PIPELINESdict 类型的变量),在其中添加以下内容。

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

而后,启动 Scrapy 爬虫,运行完成以后,您就应该能看到抓取结果出如今 任务详情-结果 里。

Python 爬虫集成

将下列代码加入到您爬虫中的结果保存部分。

# 引入保存结果方法
from crawlab import save_item

# 这是一个结果,须要为 dict 类型
result = {'name': 'crawlab'}

# 调用保存结果方法
save_item(result)

而后,启动爬虫,运行完成以后,您就应该能看到抓取结果出如今 任务详情-结果 里。

新增功能 3: 优化的在线文件编辑

很少文字介绍了,一图胜千言。

在线文件编辑的详细使用信息请参考《官方文档》

新增功能 4: 优化的定时任务配置

很少文字介绍了,一图胜千言。

定时任务的详细使用信息请参考《官方文档》

新增功能 5: 可选的 CRAWLAB_API_ADDRESS

相信不少部署过 Crawlab 的 Docker 用户都遇到过登陆按钮转圈圈或报登陆出错的信息。这绝大多数都是由于 CRAWLAB_API_ADDRESS 这个环境变量出了问题。以前在 Docker 部署 中,若是须要在服务器上部署,CRAWLAB_API_ADDRESS 这个环境变量是强制要求的,不然默认就会以 http://localhost:8000 做为默认 API 地址,从而致使错误。形成这样问题的根本缘由是先后端分离的架构,虽然方便了开发流程,可是让部署配置变得更复杂。

在本次更新中,咱们经过 Nginx 的 代理转发URL 重写 将 API 的请求地址改成了默认的 /api,所以每次请求 API 的时候会自动去找 http://<your_ip>:<your_port>/api,从而再也不依赖 CRAWLAB_API_ADDRESS 这个变量。这样必定程度上下降了部署难度。

更新日志

功能 / 优化

  • 邮件通知. 容许用户发送邮件消息通知.
  • 钉钉机器人通知. 容许用户发送钉钉机器人消息通知.
  • 企业微信机器人通知. 容许用户发送企业微信机器人消息通知.
  • API 地址优化. 在前端加入相对路径,所以用户不须要特别注明 CRAWLAB_API_ADDRESS.
  • SDK 兼容. 容许用户经过 Crawlab SDK 与 Scrapy 或通用爬虫集成.
  • 优化文件管理. 加入树状文件侧边栏,让用户更方便的编辑文件.
  • 高级定时任务 Cron. 容许用户经过 Cron 可视化编辑器编辑定时任务.

Bug 修复

  • nil retuened 错误.
  • 使用 HTTPS 出现的报错.
  • 没法在爬虫列表页运行可配置爬虫.
  • 上传爬虫文件缺乏表单验证.

产品规划

如下是 Crawlab 后面的产品规划。这个规划不必定是最终肯定的版本,后面根据用户反馈和开发组的时间安排(例若有成员要花时间买房、找老婆、生孩子)作必定调整。固然,也欢迎你们随时提供反馈和建议。

社区

若是您以为 Crawlab 对您的平常开发或公司有帮助,请加做者微信 tikazyq1 并注明 "Crawlab",做者会将你拉入群。欢迎在 Github 上进行 star,以及,若是遇到任何问题,请随时在 Github 上提 issue。另外,欢迎您对 Crawlab 作开发贡献。

相关文章
相关标签/搜索