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

船火儿
• 阅读 3683

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

前言

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)配置

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

流程图

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

设置

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

Spiderfile

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

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

可配置爬虫原理

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

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

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
3年前
Java爬虫之JSoup使用教程
title:Java爬虫之JSoup使用教程date:201812248:00:000800update:201812248:00:000800author:mecover:https://imgblog.csdnimg.cn/20181224144920712(https://www.oschin
Wesley13 Wesley13
3年前
VBox 启动虚拟机失败
在Vbox(5.0.8版本)启动Ubuntu的虚拟机时,遇到错误信息:NtCreateFile(\\Device\\VBoxDrvStub)failed:0xc000000034STATUS\_OBJECT\_NAME\_NOT\_FOUND(0retries) (rc101)Makesurethekern
Wesley13 Wesley13
3年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
3年前
ELK学习笔记之配置logstash消费kafka多个topic并分别生成索引
0x00 filebeat配置多个topicfilebeat.prospectors:input_type:logencoding:GB2312fields_under_root:truefields:添加字段
Wesley13 Wesley13
3年前
PHP创建多级树型结构
<!lang:php<?php$areaarray(array('id'1,'pid'0,'name''中国'),array('id'5,'pid'0,'name''美国'),array('id'2,'pid'1,'name''吉林'),array('id'4,'pid'2,'n
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
船火儿
船火儿
Lv1
瀚海阑干百丈冰,愁云惨淡万里凝。
文章
4
粉丝
0
获赞
0