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

2020-01-17 17:03:59 +08:00
 tikazyq

前言

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

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

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

新增功能 1: 消息通知

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

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

手机推送

邮件内容

钉钉内容

企业微信内容

触发模式

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

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

您可以在 设置 页面中配置您的通知渠道和触发模式。

配置消息通知

消息通知的配置非常简单,关于如何配置消息通知请参照 《官方文档》。如果有疑问,请加作者微信 tikazyq1 拉群讨论。

新增功能 2: Crawlab SDK

痛点 1: 上传爬虫很痛苦

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

痛点 2: 集成爬虫很心累

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

解决办法: 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 这个变量。这样一定程度上降低了部署难度。

更新日志

功能 / 优化

Bug 修复

产品规划

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

社区

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

1554 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/638807

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX