当前位置: 首页 > 科技观察

手把手教你写一个网络爬虫(三):开源爬虫框架比较

时间:2023-03-18 14:40:42 科技观察

本系列:《手把手教你写网络爬虫(1):网易云音乐歌单》《手把手教你写网络爬虫(2):迷你爬虫架构》ProjectLanguageStarWatchForkNutchJava1111195808webmagicJava42166182306WebCollectorJava1222255958heritrix3Java773141428crawler4jJava18312421136PyspiderPython85816872273ScrapyPython1964214055261看到了吗?star数最高的scrapy比其他所有的加起来都多,我好像听他说过这样的话:优点:极其灵活的定制化爬行。社区人多,文档齐全。URL重复数据删除使用布隆过滤器方案。可以处理不完整的HTML,Scrapy提供了选择器(基于lxml的更高级接口),可以高效处理不完整的HTML代码。缺点:不支持分布式部署。原生不支持爬取JavaScript页面。全命令行操作,不友好,需要一定的学习周期。结论篇幅有限,所以我们先选择这三个最具代表性的框架进行PK。它们都有着远超其他的优势,比如:Nutch的自然搜索引擎解决方案、Pyspider的产品级WebUI、Scrapy最灵活的定制爬虫。它们也有各自致命的缺点,比如Scrapy不支持分布式部署,Pyspider不够灵活,Nutch和搜索绑定。如何选择?我们的目标是做一个纯粹的爬虫,而不是做一个搜索引擎,所以先排除Nutch,留下人性化的Pyspider和高度可定制的Scrapy。Scrapy的灵活性让我们几乎可以完成任何苛刻的爬虫需求,它的“难”也让我们不自觉地研究爬虫技术。现在不是享受Pyspider的时候,当前的当务之急是打好基础,学习最接近爬虫本质的框架,了解它的原理,所以Pyspider也排除在外。最终,Scrapy从个人需求的理性角度胜出!其实Scrapy还有更多优势:HTML、XML源数据选择和原生支持提取。提供一系列在蜘蛛之间共享的可重用过滤器(即ItemLoaders),并提供对爬取数据的智能处理的内置支持。通过提要导出提供对多种格式(JSON、CSV、XML)、多种存储后端(FTP、S3、本地文件系统)的内置支持。提供媒体管道,可以自动下载爬取数据中的图片(或其他资源)。高可扩展性。您可以使用信号和精心设计的API(中间件、扩展、管道)来自定义和实现您的功能。内置中间件和扩展提供对以下功能的支持:Cookies和session处理HTTP压缩HTTP认证HTTP缓存user-agent模拟robots.txt抓取深度限制对于非英文语言的不规范或错误的编码语句,自动检测和处理强大的编码支持。支持基于模板生成爬虫。在加快爬虫创建速度的同时,使代码在大型项目中更加一致。提供可扩展的状态收集工具,用于多爬虫下的性能评估和故障检测。提供交互式shell终端,为您测试XPath表达式、编写和调试爬虫提供了极大的便利。提供系统服务,简化生产环境的部署和运行。内置的Telnet终端可以让你在Scrapy进程中通过hook到Python终端来查看和调试爬虫。日志记录为您在抓取过程中捕获错误提供了便利。支持站点地图抓取。带缓存的DNS解析器。接下来就是炸Scrapy好久了,时间到了。如果大家都能喜欢,学习效率肯定会翻倍!下次我会给大家带来很多干货,完成更具挑战性的爬行任务。下次见!原文链接:http://www.cnblogs.com/tuohai666/p/8861422.html