golang比起python爬虫的优势_强大高效而精简易用的Golang爬虫框架Colly,能否取代 Scrapy?...

本文对比了Python爬虫框架Scrapy与Golang的Colly,指出Colly以其简单易用、轻量级及高性能的优势逐渐受到关注。Colly的API简洁,支持并发,并具有分布式爬虫的能力。尽管Scrapy功能丰富,但Colly的简洁设计使得代码管理更清晰,特别适合中小型项目。此外,Colly与分布式爬虫管理平台Crawlab的集成,使其在爬虫管理方面也表现出便利性。尽管Colly目前在动态渲染内容支持等方面尚有不足,但其未来发展前景值得期待。
摘要由CSDN通过智能技术生成

前言

任何刚接触爬虫编程的朋友可能都熟悉或者或多或少了解过基于 Python 异步框架 Twisted 的爬虫框架 Scrapy。Scrapy 发展了将近 7 年,是爬虫框架中的开山鼻祖,自然而然成为最受欢迎的也是应用最广的爬虫框架。对于 Scrapy 来说,其天然的优势是支持并发,而且集成了 HTTP 请求、下载、解析、调度等爬虫程序中常见的功能模块,让爬虫工程师只专注于页面解析和制定抓取规则,在当时极大的简化了爬虫开发流程,提高了开发效率。

但是,Scrapy 并不是完美的,它仍然有不少缺点。其中,它的模版定制化成为了制约 Scrapy 爬虫项目的双刃剑:一方面,Scrapy 抽象出了各种必要的模块,包括爬虫(Spider)、抓取结果(Item)、中间件(Middleware)、管道(Pipeline)、设置(Setting)等,让用户可以直接上手按照一定规则编写自己想要开发的爬虫程序;另一方面,这些高度抽象的模块让整个爬虫项目显得比较臃肿,每个爬虫项目都需要按照相应的模版生成好几个文件,导致配置、爬虫等管理起来相对比较混乱。而且,Scrapy 在一些特殊场景例如分布式抓取时显得心有余而力不足,因此很多高级爬虫工程师甚至需要更改 Scrapy 源码来满足业务要求。

为了解决这些问题,基于静态语言 Golang 的爬虫框架 Colly 在 2017 年末诞生了。虽然它的名气和受欢迎程度还不及 Scrapy,但在试用之后我发现它有一个最特别的优势:简单(Easiness)。根据 Colly 官网上的特性介绍,它有清爽的 API(Clean API),快速(Fast),天然支持分布式(Distributed),同步/异步/并行抓取(Sync/async/parallel scraping),丰富的扩展(Extensions),以及更多特性。作者在简单的看了 Colly 的文档之后,尝试用 Colly 编写一些相对简单的爬虫程序,发现编写完毕后,每个网站的代码只包含一个文件。简而言之,它相当轻量级,不需要特别多的冗余代码就可以实现自己想要的逻辑。

下图是 Colly 和 Scrapy 在 Github 的 Star 数对比。可以看到 Colly 发展较晚,star 数不到 Scrapy 的三分之一,但还在高速增长当中。本文将着重介绍这个年轻而强大的爬虫框架: Colly。

静态语言 Golang

Colly 是基于静态语言 Golang 开发的。众所周知,Golang 也是一个比较年轻的语言,仅有 13 年历史(相较而言,Python 有将近 30 年历史)。Golang 天然支持并发(Concurrency),要起一个协程(Coroutine),只需要在调用函数前加一个 go 关键词即可,非常简单。当然,Golang 还有其他很棒的特性,例如通道(chan)。不过对于爬虫来说支持并发是非常重要的,因为一个高效的爬虫需要尽可能多的占用网络带宽资源,Golang 的并发特性给编写爬虫框架来说带来了优势。反观 Python,如果要实现

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值