谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

  • A+
所属分类:编程语言

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

Project

Language

Star

Watch

Fork

Nutch

Java

1111

195

808

webmagic

Java

4216

618

2306

WebCollector

Java

1222

255

958

heritrix3

Java

773

141

428

crawler4j

Java

1831

242

1136

Pyspider

Python

8581

687

2273

Scrapy

Python

19642

1405

5261

看到了吗?星星数排名第一的Scrapy比其他所有的加起来都要多,我仿佛听到他这样说:

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

开源框架大PK

各路英雄已经到齐了, PK现在开始!

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

优点:

Nutch支持分布式抓取,并有Hadoop支持,可以进行多机分布抓取,存储和索引。另外很吸引人的一点在于,它提供了一种插件框架,使得其对各种网页内容的解析、各种数据的采集、查询、集群、过滤等功能能够方便的进行扩展。正是由于有此框架,使得 Nutch 的插件开发非常容易,第三方的插件也层出不穷,极大的增强了 Nutch 的功能和声誉。

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

Pyspider

介绍:

Pyspider是一个国人编写的强大的网络爬虫系统并带有强大的WebUI。采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器,任务监视器,项目管理器以及结果查看器。

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

优点:

  1. 支持分布式部署。

  2. 完全可视化,对用户非常友好:WEB 界面编写调试脚本,起停脚本,监控执行状态,查看活动历史,获取结果产出。

  3. 简单,五分钟就能上手。脚本规则简单,开发效率高。

  4. 支持抓取JavaScript的页面。

总之,Pyspider非常强大,强大到更像一个产品而不是一个框架。

缺点:

  1. URL去重使用数据库而不是布隆过滤器,亿级存储的db io将导致效率急剧降低。

  2. 使用上的人性化牺牲了灵活度,定制化能力降低。

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

结论

篇幅有限,就先选择这三个最有代表性的框架进行PK。他们都有远超别人的优点,比如:Nutch天生的搜索引擎解决方案、Pyspider产品级的WebUI、Scrapy最灵活的定制化爬取。也都各自致命的缺点,比如Scrapy不支持分布式部署,Pyspider不够灵活,Nutch和搜索绑定。究竟该怎么选择呢?

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

  1. HTML, XML源数据选择及提取的原生支持。

  2. 提供了一系列在spider之间共享的可复用的过滤器(即 Item Loaders),对智能处理爬取数据提供了内置支持。

  3. 通过 feed导出 提供了多格式(JSON、CSV、XML),多存储后端(FTP、S3、本地文件系统)的内置支持。

  4. 提供了media pipeline,可以 自动下载 爬取到的数据中的图片(或者其他资源)。

  5. 高扩展性。您可以通过使用 signals ,设计好的API(中间件, extensions, pipelines)来定制实现您的功能。

  6. 内置的中间件及扩展为下列功能提供了支持:

  1. cookies and session 处理

  2. HTTP 压缩

  3. HTTP 认证

  4. HTTP 缓存

  5. user-agent模拟

  6. robots.txt

  7. 爬取深度限制

  1. 针对非英语语系中不标准或者错误的编码声明, 提供了自动检测以及健壮的编码支持。

  2. 支持根据模板生成爬虫。在加速爬虫创建的同时,保持在大型项目中的代码更为一致。

  3. 针对多爬虫下性能评估、失败检测,提供了可扩展的 状态收集工具 。

  4. 提供 交互式shell终端 , 为您测试XPath表达式,编写和调试爬虫提供了极大的方便。

  5. 提供 System service, 简化在生产环境的部署及运行。

  6. 内置 Telnet终端 ,通过在Scrapy进程中钩入Python终端,使您可以查看并且调试爬虫。

  7. Logging 为您在爬取过程中捕捉错误提供了方便。

  8. 支持 Sitemaps 爬取。

  9. 具有缓存的DNS解析器。

下一步

吹了半天的Scrapy,时间也到了,如果大家能够喜欢上它,学习的效率一定会成倍提升!下次我会为大家带来满满的干货,并完成更具挑战性的爬虫任务,我们下期再见!

谁说零基础就不能写爬虫?资深程序员详解:开源爬虫框架对比!

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: