爬虫管理平台 Crawlab v0.4.1 发布(可配置爬虫) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tikazyq
V2EX    推广

爬虫管理平台 Crawlab v0.4.1 发布(可配置爬虫)

  •  2
     
  •   tikazyq 2019-12-17 15:27:44 +08:00 4577 次点击
    这是一个创建于 2190 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言

    Crawlab 是基于 Golang 的分布式爬虫管理平台,支持 Python、NodeJS、Java、Go、PHP 等多种编程语言以及多种爬虫框架。

    相信已经对 Crawlab 有所了解的同学应该大概了解 Crawlab 是一个爬虫管理平台。如果不理解什么是爬虫管理平台,建议读者先阅读《如何快速搭建实用的爬虫管理平台》。简单来说,爬虫管理平台是一种能够管理爬虫和执行、监控爬虫任务的平台,可以将爬虫操作可视化出来。而 Crawlab 作为一个灵活且强大的爬虫管理平台,从今年 3 月份上线以来,已经收获不少爬虫工程师以及开发者的好评,很多用户已经在企业中部署使用 Crawlab。现在 Crawlab 在 Github 上已经有 3.1k stars,Dockerhub 上有 7.1k pulls。另外,Crawlab 还收到了不少实际用户反馈的建议,在 Github 上已经解决了 122 个 issues,open 的还有 48 个。除了 bug 以外,其中有非常多的建设性意见,包括采用配置文件来配置怕环境、爬虫任务数据导出、更好的文件管理等等。

    Crawlab 为什么能受到用户的好评?我们总结下来,主要是 Crawlab 解决了爬虫工程师要管理很多爬虫的痛点。一般爬虫工程师需要查看爬虫任务运行情况,例如错误日志、时间等等,这些 Crawlab 都可以帮他们做到;另外爬虫工程师还需要定时执行任务,而 Crawlab 恰好也有定时任务的功能;此外,Crawlab 是 golang 写的后端,在稳定性上来说是比较强的。我们在调研了用户对 Crawlab 的定位后,发现用户任务 Crawlab 提供的最大价值是便捷性,也就是 Easiness。因此,在本次更新 v0.4.1 (严格意义上来说是 v0.4.0,但这一版有 bug )中 Crawlab 推出了另一个重大功能,可配置爬虫,能够进一步的简化抓取过程。下面我们将着重介绍一下。

    可配置爬虫简介

    如果是 Crawlab 早期的用户,可能已经对可配置爬虫这个名词不陌生,因为我们在 v0.2.1 中已经开发过这样的功能(详情见《我是如何在 3 分钟内开发完一个爬虫的》)。只是当时的版本还非常局限,仅仅支持非常简单的配置,而且稳定性也不高,实用性不强,后来就在迁移到 golang 版本的时候移除了。

    但由于很多 Crawlab 的用户都在问可配置爬虫,甚至有人在 Github 上提出了这样的 enhancement issue,我们意识到这个需求还是很普遍的。因此,这次版本更新中就将这个功能迁移回来了。但是本次更新的可配置爬虫跟 v0.2.1 版本有很大的不同,虽然同样都是基于 scrapy 框架,但不同的是 v0.4.1 版本相较于老版本来说更强大,更通用。

    下面是本次更新的可配置爬虫的截图。

    阶段( Stage )、字段( Field )配置

    流程图

    设置

    Spiderfile

    简单来说,可配置爬虫就是能够通过不写代码、只配置抓取规则的方式来编写爬虫,一个不复杂的列表+详情页的爬虫很快就写好了,大概 1-5 分钟之内就可以写完。另外 Spiderfile 是 Crawlab 新开发的定义爬虫的方式,旨在让配置爬虫更简单,就跟 Dockerfiledocker-compose.ymlJenkinsfile 等类似,利用配置代码来定义一系列操作,做到 Spider as Code。我们今后的开发将会围绕着 Spiderfile,包括爬虫所需的库、爬虫运行参数、爬虫定时任务等等,都可以在 Spiderfile 中定义,这个我们开发组后续会逐步完善。

    可配置爬虫原理

    下面,我们将介绍可配置爬虫的一些基本概念。下图是可配置爬虫中各个概念之间的关系。

    可配置爬虫包括如下元素:

    • Spiderfile:类似 Dockerfile、Jenkinsfile、docker-compose.yml 文件,是可配置爬虫的 YAML 格式的配置文件,抓取的阶段字段分页等都可以由这个文件配置;
    • 阶段( Stage ):可配置爬虫抓取的不同阶段,一个阶段通常对应一个类别页面的抓取过程,例如列表页为一个阶段,详情页为另一个阶段,在 Scrapy 中对应不同的回调函数;一个阶段中可以定义列表选择器和分页选择器以及字段定义;一个阶段中可以通过定义下一阶段,且只能定义一个。
    • 字段( Field ):字段其实就是抓取数据的字段,例如标题、URL、价格、描述等等;字段提取规则既可以用 XPath 页可以用 CSS。

    Crawlab 的可配置爬虫是基于 Scrapy 的,因此天生支持并发。而且,可配置爬虫完全支持自定义爬虫的一般功能,因此也支持任务调度、任务监控、日志监控、数据分析。其可配置原理是,Crawlab 的可配置爬虫会根据 Spiderfile 的配置规则来生成 scrapy 代码,然后让其像自定义爬虫一样运行。这样来看,可配置爬虫是一种特殊的自定义爬虫,只是其代码是由 Spiderfile 配置文件转译后生成的。

    更新详情

    0.4.1 (2019-12-13)

    Features / Enhancement

    • Spiderfile Optimization. Stages changed from dictionary to array. #358
    • Baidu Tongji Update.

    Bug Fixes

    • Unable to display schedule tasks. #353
    • Duplicate node registration. #334

    0.4.0 (2019-12-06)

    Features / Enhancement

    • Configurable Spider. Allow users to add spiders using Spiderfile to configure crawling rules.
    • Execution Mode. Allow users to select 3 modes for task execution: All Nodes, Selected Nodes and Random.

    Bug Fixes

    • Task accidentally killed. #306
    • Documentation fix. #301 #301
    • Direct deploy incompatible with Windows. #288
    • Log files lost. #269

    TODO / Roadmap

    • [ ] 结果展示: 支持 JSON 数据展示
    • [ ] 交互性: 任务列表、爬虫列表支持筛选、排序
    • [ ] 用户管理: 配置是否允许用户注册;添加、删除、修改用户
    • [ ] 文件管理: 新增、保存、删除、重命名文件
    • [ ] 定时任务: 前端生成 Cron ;与 Linux 一致;爬虫详情显示定时任务
    • [ ] 服务器: 利用 Nginx 转发将 CRAWLAB_API_ADDRESS 设置为默认 IP
    • [x] 免责声明
    • [ ] Crawlab SDK
    • [ ] Crawlab 插件

    项目地址

    社区

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

    37 条回复    2020-01-13 21:00:24 +08:00
    july1115
        1
    july1115  
       2019-12-17 15:38:34 +08:00
    改天试一试
    tikazyq
        2
    tikazyq  
    OP
       2019-12-17 15:38:52 +08:00
    @july1115 感谢关注
    chuhemiao
        3
    chuhemiao  
       2019-12-17 16:08:37 +08:00
    坐等大佬加个微信公众号爬虫
    tikazyq
        4
    tikazyq  
    OP
       2019-12-17 16:17:51 +08:00
    @chuhemiao 这个需要自己写哟
    392039757
        5
    392039757  
       2019-12-17 16:37:32 +08:00
    以前 clone 大佬代码的路过,看了下文档,对 scrapy 的支持还不是很好,目前还是使用 shell 的方式对 scrapy 进行启动和监控,如果只是小批量的爬虫可能也不需要用到分布式的架构,如果需要分布式的话 scrapy-redis 还是最简的解决方案,下午大佬以后能在这方面多做改进。( ps:很多 web 爬虫框架都烂尾了,坚持下来还是不容易,给大佬点赞)
    hmxxmh
        6
    hmxxmh  
       2019-12-17 16:44:17 +08:00
    给大佬点赞
    tikazyq
        7
    tikazyq  
    OP
       2019-12-17 16:56:34 +08:00
    @392039757 感谢你的支持,crawlab 在某些方面确实需要改进和优化,你说的几点都是潜在的可以提高的地方,其实已经有不少用户在企业里使用了,就是因为不是所有的爬虫都是 scrapy 的,总之很好的意见,我们会努力改进
    tikazyq
        8
    tikazyq  
    OP
       2019-12-17 16:56:45 +08:00
    @hmxxmh 感谢支持
    Keyes
        9
    Keyes  
       2019-12-17 17:06:21 +08:00
    提供侵入、非法控制计算机信息系统程序、工具罪了解一下
    musi
        10
    musi  
       2019-12-17 17:32:26 +08:00
    已 star,抽空学习一下
    simenet
        11
    simenet  
       2019-12-17 17:35:27 +08:00
    提供侵入、非法控制计算机信息系统程序、工具罪了解一下
    wnanbei
        12
    wnanbei  
       2019-12-17 17:55:52 +08:00
    已 star,支持一下
    SP00F
        13
    SP00F  
       2019-12-17 18:08:54 +08:00
    卖菜刀的算不算提供作案工具啊。。。楼上真的……
    tikazyq
        14
    tikazyq  
    OP
       2019-12-17 18:38:27 +08:00 via iPhone
    @Keyes 这是把瑞士军刀,用来切水果还是干坏事,看使用的人了
    tikazyq
        15
    tikazyq  
    OP
       2019-12-17 18:38:37 +08:00 via iPhone
    @musi 感谢支持
    tikazyq
        16
    tikazyq  
    OP
       2019-12-17 18:38:52 +08:00 via iPhone
    @wnanbei 感谢支持
    tikazyq
        17
    tikazyq  
    OP
       2019-12-17 18:39:11 +08:00 via iPhone
    @SP00F 非常赞同
    SP00F
        18
    SP00F  
       2019-12-17 18:54:11 +08:00
    前段时间想做爬虫来着,想用 pyspider 来着,但是感觉好久没更新了。正好学 golang 正好 GitHub 上找到你这项目,不过一直没时间部署一个用一下来着。。。
    今天在 V2 就看到作者了
    WEBUG
        19
    WEBUG  
       2019-12-17 18:58:57 +08:00 via Android
    支持自动登录吗,免代码
    tikazyq
        20
    tikazyq  
    OP
       2019-12-17 20:51:24 +08:00 via iPhone
    @SP00F 很高兴对 crawlab 感兴趣,可以多多交流
    tikazyq
        21
    tikazyq  
    OP
       2019-12-17 20:51:58 +08:00 via iPhone
    @WEBUG 暂时还不行哟,不过你可以试试自定义爬虫,这里可以运行任何形式的爬虫
    resu
        22
    resu  
       2019-12-17 21:39:48 +08:00
    马克之
    beyondragon
        23
    beyondragon  
       2019-12-17 21:53:25 +08:00
    马克支持
    Tink
        24
    Tink  
    PRO
       2019-12-18 00:06:45 +08:00 via iPhone
    强大!
    tikazyq
        25
    tikazyq  
    OP
       2019-12-18 09:59:45 +08:00
    @resu 感谢支持
    tikazyq
        26
    tikazyq  
    OP
       2019-12-18 09:59:54 +08:00
    @beyondragon 感谢支持
    tikazyq
        27
    tikazyq  
    OP
       2019-12-18 10:00:02 +08:00
    @Tink 感谢支持
    guest110
        28
    guest110  
       2019-12-18 13:05:42 +08:00 via iPhone
    给大佬点赞,另外问下这个爬虫可以配置 ip 代理池吗
    tikazyq
        29
    tikazyq  
    OP
       2019-12-18 14:39:47 +08:00
    @guest110 可以,但需要自己在爬虫里设置,Crawlab 不负责配置 IP 代理池
    hmxxmh
        30
    hmxxmh  
       2019-12-18 15:39:00 +08:00
    @tikazyq 大佬,我用 docker-compose 部署了,但是只能打开首页,输入用户名和密码进不去,是什么原因呢
    tikazyq
        31
    tikazyq  
    OP
       2019-12-18 19:57:21 +08:00 via iPhone
    @hmxxmh 可以加微信 tikazyq1,拉你入群
    mcwanderer
        32
    mcwanderer  
       2019-12-18 22:23:09 +08:00
    @tikazyq 无法注册,admin 也进不去
    uc2664360
        33
    uc2664360  
       2019-12-19 21:02:36 +08:00
    @mcwanderer
    无法登陆 +1,admin 进不去,注册一直转圈圈
    tikazyq
        34
    tikazyq  
    OP
       2019-12-20 16:46:40 +08:00
    @mcwanderer 请加微信 tikazyq1 拉群讨论
    tikazyq
        35
    tikazyq  
    OP
       2019-12-20 16:46:45 +08:00
    @uc2664360 请加微信 tikazyq1 拉群讨论
    uc2664360
        36
    uc2664360  
       2020-01-13 19:26:25 +08:00
    东西估计是个好东西,但文档写的是真不行
    tikazyq
        37
    tikazyq  
    OP
       2020-01-13 21:00:24 +08:00 via iPhone
    @uc2664360 可以加作者微信私聊 tikazyq1
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5159 人在线   最高记录 6679       Selct Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 60ms UTC 07:07 PVG 15:07 LAX 23:07 JFK 02:07
    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