更多课程 选择中心


Python培训

400-111-8989

python培训手把手教你写网络爬虫之开源爬虫框架对比

  • 发布:Python培训
  • 来源:拓海
  • 时间:2018-05-11 13:42

昨天我们在python培训班一起学了用python写网络爬虫之迷你爬虫架构,不知道大家学习的怎么样了?今天我们在来看开源爬虫框架对比的知识,希望大家看完之后对网络爬虫有一个较为深刻的理解。

开源爬虫框架对比的知识简介

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比其他所有的加起来都要多,我仿佛听到他这样说:

Scrapy语言拟人化表达
开源框架PK前言
Nutch简介
Nutch运行流程图
Nutch优缺点及Pyspider简介
Pyspider运行效果图
Pyspider优点
Pyspider缺点及Scrapy简介
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解析器。

恭喜大家阅读完了本文,相信通过最近更新这两篇文章,大家对用python写网络爬虫有了更为深刻的了解,如果大家还有关于python的疑问,欢迎大家来达内python培训机构进行咨询。

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:了解python字节码拓展您的编程知识
下一篇:python培训分享之python全貌讲解

如何运用Python编程处理大数据?用Python编程处理大数据的技巧是什么?

Python面向对象编程的知识点都在这了!

Python的高级特征及用法(部分)

听说这些Python知识,很少有人知道!

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省