1)、Scrapy:

Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试.

Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

Scrap,是碎片的意思,这个Python的爬虫框架叫Scrapy。

优点:

1.极其灵活的定制化爬取。

2.社区人数比较多、文档比较完善。

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

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

可以高效地处理不完整的HTML代码。

缺点:

1.对新学员不友好,需要一定新手期

(2)、Pyspider:

pyspider 是一个用python实现的功能强大的网络爬虫系统,能在浏览器界面上进行脚本的编写,功能的调度和爬取结果的实时查看,后端使用常用的数据库进行爬取结果的存储,还能定时设置任务与任务优先级等。

优点:

1.支持分布式部署。

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

3.简单,五分钟就能上手。脚本规则简单,开发效率高。支持抓取JavaScript的页面。

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

缺点:

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

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

(3)Apache Nutch(高大上)

Nutch是为搜索引擎设计的爬虫,大多数用户是需要一个做精准数据爬取(精抽取)的爬虫,Nutch运行的一套流程里,有三分之二是为了搜索引擎而设计的.

Nutch这个框架运行需要Hadoop,Hadoop需要开集群,对于想要快速入门爬虫的我是望而却步了…

一些资源地址列在这里,说不定以后会学习呢。

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

缺点

1.Nutch的爬虫定制能力比较弱

(4)、WebMagic

WebMagic是一个简单灵活的Java爬虫框架。基于WebMagic,你可以快速开发出一个高效、易维护的爬虫。

优点:

1.简单的API,可快速上手

2.模块化的结构,可轻松扩展

3.提供多线程和分布式支持

缺点:

1.不支持JS页面抓取

(5)、WebCollector

WebCollector是一个无须配置、便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只需少量代码即可实现一个功能强大的爬虫。WebCollector-Hadoop是WebCollector的Hadoop版本,支持分布式爬取。

优点:

1.基于文本密度的网页正文自动抽取

2.支持断点重爬

3.支持代理

缺点:

1.不支持分布式,只能单机

2.无URL优先级调度

3.活跃度不高

(6)、Heritrix3

Heritrix 是一个由 java 开发的、开源的网络爬虫,用户可以使用它来从网上抓取想要的资源

优点

Heritrix的爬虫定制参数多

缺点

1.单实例的爬虫,之间不能进行合作。

2.在有限的机器资源的情况下,却要复杂的操作。

3.只有官方支持,仅仅在Linux上进行了测试。

4.每个爬虫是单独进行工作的,没有对更新进行修订。

5.在硬件和系统失败时,恢复能力很差。

6.很少的时间用来优化性能。

7.相对于Nutch,Heritrix仅仅只是一个爬虫工具,没有提供搜索引擎。如果要对抓取的站点排序必须要实现类似于Pagerank的复杂算法。

(7)、Crawler4j

Crawler4j是一款基于Java的轻量级单机开源爬虫框架

优点

1.多线程采集

2.内置了Url 过滤机制,采用的是BerkeleyDB 进行url的过滤。

3.可扩展为支持结构化提取网页字段,可作为垂直采集用

缺点

1.不支持动态网页抓取,例如网页的ajax部分

2.不支持分布式采集,可以考虑将其作为分布式爬虫的一部分,客户端采集部分

为了更加直观这7种爬虫框架,小编做了一个框架优缺点对比图,如下:

Jsoup(经典·适合静态网友)

这个框架堪称经典,也是我们暑期实训老师讲解的框架。有近乎完整的文档介绍。

和HtmlUnit同样,只能get到静态内容。

不过,这个框架有个有个优点,具有很强大的解析网页的功能。

selenium(Google多名大佬参与开发)

感觉很厉害,实际真的很厉害,看官网以及其他人的介绍,说是真正模拟浏览器。GitHub1.4w+star,你没看错,上万了。但是我硬是没配好环境。入门Demo就是没法运行成功,所以就放弃了。

cdp4j(方便快捷,但是需要依赖谷歌浏览器)

使用前提:

安装Chrome浏览器,即可。

简单介绍:

HtmlUnit的优点在于,可以方便的爬取静态网友;缺点在于,只能爬取静态网页。

selenium的优点在于,可以爬取渲染后的网页;缺点在于,需要配环境变量等等。

将二者整合,取长补短,就有了cdp4j。

之所以选用它,是因为真的方便好用,而且官方文档详细,Demo程序基本都能跑起来,类名起的见名知意。想当年学软件工程的时候,一直在纳闷,为什么要写文档啊,我程序能实现功能不就得了?现如今,看着如此详实的文档,留下了激动而又悔恨的泪水…

cdp4j有很多功能:

a. 获得渲染后的网页源码

b. 模拟浏览器点击事件

c. 下载网页上可以下载的文件

d. 对网页进行截屏或转PDF打印

e. 等等

主流爬虫框架的基本介绍相关推荐

  1. python爬虫与java爬虫的区别_java爬虫(一)主流爬虫框架的基本介绍

    (1).Scrapy: Scrapy,Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测 ...

  2. golang爬虫框架colly简单介绍

    colly一款快速优雅的golang爬虫框架,简单易用,功能完备. colly 官网地址:http://go-colly.org/ colly github地址:github.com/gocolly/ ...

  3. Node.js学习8~10款基于nodejs的主流web框架排名及介绍

    Node.js 是基于 Chrome V8 JavaScript 引擎构建的开源.跨平台运行时环境.事件驱动的非阻塞I/O 模型使,Nodejs 能开发极其轻便且高效的 Web 应用程序.客户端 和 ...

  4. python流行的爬虫框架_Python爬虫相关框架

    Python爬虫相关框架,Python的爬虫框架就是一些爬虫项目的半成品.比如我们可以将一些常见爬虫功能的实现代码写好,然后留下一些接口,在做不同的爬虫项目时,我们只需要根据实际情况,只需要写少量需要 ...

  5. 那个爬虫框架好(简单对比)

    对于爬虫框架本身来说,都是很优秀的,说那个更好,不如说那个更适合公司的业务需求.比如javaweb项目中需要某些网站的金融系列新闻,得每天定时去抓取一些数据,你就可以考虑WebMagic框架,能够轻松 ...

  6. 主流日志框架使用及性能对比

    一.摘要 不管是使用何种编程语言,何种框架,日志输出几乎无处不再,也是任何商业软件中必不可少的一部分. 总结起来,日志的用途大致可以归纳成以下三种: 问题追踪:通过日志不仅仅包括我们程序的一些bug, ...

  7. python爬虫框架排行榜-哪种Python框架适合你?简单介绍几种主流Python框架

    众所周知,Python开发框架大大减少了开发者不必要的重复劳动,提高了项目开发效率的同时,还使得创建的程序更加稳定.目前比较主流的Python框架都有哪些呢?一般大家用的比较多的是Django.Fla ...

  8. python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍

    从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...

  9. python scrapy框架 简书_python爬虫框架——Scrapy架构原理介绍

    说起写爬虫,大多数第一时间想到的就是python了.python语法简洁明了,加上及其丰富好用的库,用它来写爬虫有天然的优势. 之前学python的时候也用requests+lxml写过几个爬虫玩,但 ...

最新文章

  1. 5、JavaScript进阶篇②——函数、事件、内置对象
  2. ospf路由 华3_「分析」大型企业中必用的动态路由OSPF
  3. 设置网页打开默认全屏_提升Adsense收入的三个关键设置
  4. linux 命令集锦
  5. python基础练习_1
  6. 关于你不知道的特征归一化/标准化
  7. UIView 学习知识点
  8. centos mysql卸载重装_centos 7.x 安装/卸载MySQL
  9. C#中timer类的用法
  10. TCP传输-出现差错的解决办法
  11. android系统镜像:boot.img kernel.img ramdisk.img system.img userdata.img cache.img recovery.img
  12. 创建表头固定,表体可滚动的GridView(转)
  13. Drawable Resources
  14. 前端技术面——(js基础二)
  15. javascript指南_JavaScript还原方法指南
  16. 单板计算机中VPX,VME,cPCI,AdvanceMC,PMC
  17. Linux vi 命令创建,Linux vi命令 创建文件
  18. 知识分享!电阻按照用途分类可以分为哪几种电阻?-道合顺大数据infinigo
  19. KY-RTI分布仿真技术:第五章 Qt程序设计
  20. 【Win10 C盘压缩卷问题解答】:无法将卷压缩到超出任何不可移动的文件所在点

热门文章

  1. Qt入门教程【STL篇】STL分析
  2. Import “XXX“ could not be resolved 原因
  3. 如何使用 COMSOL中的材料库
  4. 计算机音乐 带你去旅行,网易云音乐《带你去旅行》热评
  5. 5天学会Linux C高级
  6. GPU编程优化篇-姜雪伟-专题视频课程
  7. jquery属于html框架吗,jquery是前端框架吗?
  8. JAVA设计模式之责任链模式(职责链模式)
  9. 微信删除朋友圈多久会从服务器消失,那些从你微信朋友圈消失的人,就别再联系了,原因很简单...
  10. 【互联网营销基础知识】新媒体运营人员须知的10大素材网站(一)