V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tikazyq
V2EX  ›  程序员

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

  •  1
     
  •   tikazyq ·
    tikazyq · 2020-01-17 17:03:59 +08:00 · 1546 次点击
    这是一个创建于 1551 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

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

    更新日志

    功能 / 优化

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

    Bug 修复

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

    产品规划

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

    社区

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

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2988 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 15:13 · PVG 23:13 · LAX 08:13 · JFK 11:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.