手把手教你写网络爬虫(3):开源爬虫框架对比

2018 年 5 月 22 日 数盟

本系列:

《手把手教你写网络爬虫(1):网易云音乐歌单》

《手把手教你写网络爬虫(2):迷你爬虫架构》


1

<strong>Project</strong>


1

<strong>Language</strong>


1

<strong>Star</strong>


1

<strong>Watch</strong>


1

<strong>Fork</strong>


1

<strong>Nutch</strong>


1

Java


1

1111


1

195


1

808


1

<strong>webmagic</strong>


1

Java


1

4216


1

618


1

2306


1

<strong>WebCollector</strong>


1

Java


1

1222


1

255


1

958


1

<strong>heritrix3</strong>


1

Java


1

773


1

141


1

428


1

<strong>crawler4j</strong>


1

Java


1

1831


1

242


1

1136


1

<strong>Pyspider</strong>


1

Python


1

8581


1

687


1

2273


1

<strong>Scrapy</strong>


1

Python


1

19642


1

1405


1

5261

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

优点:

极其灵活的定制化爬取。

社区人数多、文档完善。

URL去重采用布隆过滤器方案。

可以处理不完整的HTML,Scrapy已经提供了selectors(一个在lxml的基础上提供了更高级的接口),可以高效地处理不完整的HTML代码。

缺点:

不支持分布式部署。

原生不支持抓取JavaScript的页面。

全命令行操作,对用户不友好,需要一定学习周期。

结论

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

我们的目标是做纯粹的爬虫,不是搜索引擎,所以先把Nutch排除掉,剩下人性化的Pyspider和高可定制的Scrapy。Scrapy的灵活性几乎能够让我们完成任何苛刻的抓取需求,它的“难用”也让我们不知不觉的研究爬虫技术。现在还不是享受Pyspider的时候,目前的当务之急是打好基础,应该学习最接近爬虫本质的框架,了解它的原理,所以把Pyspider也排除掉。

最终,理性的从个人的需求角度对比,还是Scrapy胜出!其实Scrapy还有更多优点:

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

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

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

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

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

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

cookies and session 处理

HTTP 压缩

HTTP 认证

HTTP 缓存

user-agent模拟

robots.txt

爬取深度限制

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

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

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

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

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

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

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

支持 Sitemaps 爬取。

具有缓存的DNS解析器。

下一步

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

原文链接:

http://www.cnblogs.com/tuohai666/p/8861422.html

媒体合作请联系:

邮箱:xiangxiaoqing@stormorai.com




登录查看更多
0

相关内容

网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常被称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本,已被广泛应用于互联网领域。搜索引擎使用网络爬虫抓取Web网页、文档甚至图片、音频、视频等资源,通过相应的索引技术组织这些信息,提供给搜索用户进行查询。网络爬虫也为中小站点的推广提供了有效的途径。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
手把手教你用R语言制作网络爬虫机器人(一)
R语言中文社区
4+阅读 · 2019年1月26日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
设计和实现一款轻量级的爬虫框架
架构文摘
13+阅读 · 2018年1月17日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
33款可用来抓数据的开源爬虫软件工具 (推荐收藏)
数据科学浅谈
7+阅读 · 2017年7月29日
【宁波站】网络爬虫与文本挖掘
数萃大数据
5+阅读 · 2017年7月19日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Neural Arithmetic Logic Units
Arxiv
5+阅读 · 2018年8月1日
Arxiv
3+阅读 · 2018年4月5日
Arxiv
8+阅读 · 2018年1月12日
VIP会员
相关VIP内容
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【2020新书】从Excel中学习数据挖掘,223页pdf
专知会员服务
90+阅读 · 2020年6月28日
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
相关资讯
34个最优秀好用的Python开源框架
专知
9+阅读 · 2019年3月1日
手把手教你用R语言制作网络爬虫机器人(一)
R语言中文社区
4+阅读 · 2019年1月26日
我是一个爬虫
码农翻身
12+阅读 · 2018年6月4日
干货 | Python 爬虫的工具列表大全
机器学习算法与Python学习
10+阅读 · 2018年4月13日
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
设计和实现一款轻量级的爬虫框架
架构文摘
13+阅读 · 2018年1月17日
Python3爬虫之入门和正则表达式
全球人工智能
7+阅读 · 2017年10月9日
33款可用来抓数据的开源爬虫软件工具 (推荐收藏)
数据科学浅谈
7+阅读 · 2017年7月29日
【宁波站】网络爬虫与文本挖掘
数萃大数据
5+阅读 · 2017年7月19日
Top
微信扫码咨询专知VIP会员