结果数据源集成Crawlab专业版首次发布的版本中(v0.1.1)
优采云 发布时间: 2021-08-24 21:04结果数据源集成Crawlab专业版首次发布的版本中(v0.1.1)
前言
Crawlab 是一个基于 Golang 的分布式爬虫管理平台,旨在帮助爬虫工程师和开发者轻松管理所有爬虫。在创建之初,Crawlab 就采用了 Shell 执行原理,使其能够执行理论上用任何编程语言开发的爬虫,管理任何爬虫框架。 Crawlab自2019年3月发布第一个版本以来,经过一年多的迭*敏*感*词*发,成为最受欢迎的爬虫管理平台。在产品不断完善的同时,开发团队也意识到有必要为企业量身打造更稳定、更灵活、更实用的版本。
专业版
Crawlab Pro(Crawlab Pro)专为专业用户和企业量身打造。它比 Crawlab 社区版更稳定、更强大。专业版在底层做了大量优化,尤其是数据库层面,保证爬虫任务稳定高效运行,抓取数据。此外,相比社区版,专业版还有很多强大的专属功能,比如节点、数据库监控功能、SQL数据库(MySQL、Postgres)集成等等。未来,我们将支持更高级的可配置爬虫。
结果数据源集成
在 Crawlab 专业版的第一个版本中(v0.1.0),我们支持除 MongoDB 之外的其他数据源,包括 MySQL 和 Postgres 数据库。在最新的 Crawlab 专业版更新中(v0.1.1),我们加入了Kafka和ElasticSearch的集成,增强了结果存储格式的多样化,满足了以Kafka和ElasticSearch为主要结果存储格式的用户。
因此,Crawlab 专业版现在可以集成大多数数据源,包括 MongoDB、MySQL、Postgres、Kafka、ElasticSearch。当然,未来我们会集成更多的数据源,比如SQL Server、Cassandra、HBase等。
用户可以在Crawlab专业版上运行爬虫,抓取数据,通过调用Crawlab SDK(如下图)将结果发送到指定的数据源。
调用Crawlab SDK的方法很简单。下面是在 Scrapy Pipeline 中发送结果数据的示例。只需要调用 save_item 方法保存结果。您无需单独指定数据源的连接地址、端口、用户名、密码等,Crawlab SDK将帮助您轻松完成结果数据整合。
from crawlab import save_item
class ExamplePipeline(object):
def process_item(self, item, spider):
save_item(item) # 只需要调用这一句就可以了
return item
集成成功后,您可以在Crawlab的Web界面上看到抓取到的结果数据(如下图所示)。
Kafka 集成
Kafka 是由 Apache 软件基金会开发的开源流处理平台。 Kafka是一个高吞吐量的分布式发布订阅消息系统,可以处理网站中消费者的所有动作流数据。简单来说,Kafka可以理解为一个分布式消息队列。
我们为什么在爬取结果存储中使用Kafka?这一般是高并发场景下需要考虑的情况。方便在大吞吐量抓包结果处理的情况下进行限流处理,防止数据库被分布式爬虫集群DDoS(Distributed Deny of Service)分发。对于大型爬虫系统,单位时间内捕获的结果数量一般非常多,存储结果的数据库(如MongoDB、MySQL、HBase)的写入能力有限。如果爬取结果的吞吐量过大,数据库可能无法正常存储结果数据。这时候可能是数据库负载过大,严重影响读写性能,甚至导致数据库崩溃。
为了解决这个问题,我们可以使用Kafka这样的流处理系统,在仓储端部署一个或多个消费者(Consumers)作为缓冲区,控制写入速度,从而避免数据库负载过大的情况。这相当于公园门口的排队区。当游客过多时,检票员或售票机处理不了这么多游客,所以会先让大家进入排队区等票,以免人挤人,挤闸,造成踩踏等严重后果。
Kafka 与 Crawlab 的集成也很简单。步骤如下:
在“设置”->“数据源”中新建数据源,选择Kafka,输入目标数据库的Host、Port、Topic、用户名、密码等信息;在“爬虫详情”页面,选择数据源前创建;确保爬虫脚本使用Crawlab SDK的save_item保存结果数据;运行爬虫任务;在“爬虫详细信息”->“结果”中查看结果数据。 ElasticSearch 集成
Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个基于 RESTful Web 界面的具有分布式多用户功能的全文搜索引擎。 Elasticsearch 是用 Java 语言开发的,并根据 Apache 许可条款作为开源发布。它是一个流行的企业搜索引擎。 Elasticsearch用于云计算实现实时搜索,稳定可靠,速度快,安装使用方便。简而言之,ElasticSearch 是搜索引擎的数据库。
很多时候,我们希望将爬虫的结果存储在数据库中,并作为原创数据提供给搜索引擎。例如谷歌、百度等搜索引擎使用大型爬虫抓取网页,然后通过PageRank算法给页面分配权重,再为前端提供搜索结果。
以下是将 ElasticSearch 与 Crawlab 集成的步骤:
在“设置”->“数据源”中新建数据源,选择ElasticSearch,输入目标数据库的Host、Port、Index、用户名、密码等信息;在“爬虫详情”页面,选择数据源前创建;确保爬虫脚本使用Crawlab SDK的save_item保存结果数据;运行爬虫任务;在“爬虫详细信息”->“结果”中查看结果数据。总结
Crawlab 专业版的结果数据整合功能,让用户可以非常方便的将爬虫结果存储到对应的结果数据源中,例如 MySQL、Kafka、ElasticSearch 等,Crawlab SDK 在后台做了很多事情。用户只需要调用 save_item 来整合结果数据。结果数据不仅可以存储在数据库中,还可以在界面中进行浏览。之后,Crawlab 开发团队会增加更多的数据源,让用户可以集成更多的数据库。
如果你觉得Crawlab对你有帮助,请加tikazyq1微信咨询,我们会把你拉进交流群。
参考