爬虫管理平台 Crawlab v0.4.4 发布(在微信或钉钉上就可以监控爬虫任务) - V2EX
请不要在回答技术问题时复制粘贴 AI 生成的内容
tikazyq

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

  •  1
     
  •   tikazyq
    tikazyq Jan 17, 2020 2121 views
    This topic created in 2311 days ago, the information mentioned may be changed or developed.

    前言

    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 做开发贡献。

    No Comments Yet
    About     Help     Advertise     Blog     API     FAQ     Solana     1043 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 43ms UTC 23:11 PVG 07:11 LAX 16:11 JFK 19:11
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86