垂直型爬虫架构设计(1)

简介: 个人对于垂直型爬虫的理解,对于垂直型爬虫与常规爬虫的分析.

从事爬虫方向开发马上也将近两年时间了,今天基友问我关于爬虫的架构设计问题.其实这么久也想总结一下自己的整个开发的过程,架构的设计问题..对自己进行一些总结..仅作参考.

1.爬虫的分类 :

    对于我来说,爬虫分为两类:

        需要载入配置文件的爬虫与不需要载入配置文件的爬虫.

        其实也就是人们常说的垂直型爬虫跟宽度(深度)遍历爬虫.

2.爬虫的架构:

    1.宽度遍历爬虫.

        做过SEO的朋友大概都知道,如果一个网站需要百度能够尽快的抓取,那么仅仅优化关键词,提高权重等都是比较简单的优化,爬虫友好性需要网站在建设的时候就考虑到爬虫的友好.如:标签设置,架构设计...

        宽度遍历爬虫就是宽度抓取,网站在设计的时候就直接是按照宽度设计...不太好理解,也不太好解释... 大概的意思就是深度少...如; 进入首页之后---就能看到各个分类,点击分类就能看到分类列表---点击分类列表就是内容...减少与用户的交互,也让爬虫能直接找到重点.

        各大搜索引擎应用的都是宽度遍历方式来抓取数据.不信你可以建一个网站.设置十几级深度..首页-分类--再分类---再分类之后十几级之后才能看到内容..你可以试一下,爬虫抓取的效果怎么样.

        宽度遍历爬虫比较常见的很多,Nutch、Heritrix等都是宽度遍历爬虫的典型代表,比较常用的就是Nutch.

2.垂直型爬虫

        垂直型爬虫我个人感觉是最近几年才被提出的,垂直型爬虫关注内容与准确还有效率.比较常见的就是舆情项目,财经项目等.仅仅抓取到有效有用的数据,并且在爬虫 抓取之初就能够把抓取到的内容进行简单的处理: 如.提取标题,内容,时间等.

        垂直型爬虫注重效率,相对来说.一个网站有十万个链接,宽度遍历爬虫需要把十万个链接都下载到你的数据库中,而垂直型爬虫只需要下载对你有用的数据,也许仅有几千或者一万,如果垂直型爬虫抓取这么点数据比宽度遍历爬虫抓取的还慢,那么这个项目在这点上就是个垃圾.

        垂直型爬虫相对于宽度遍历爬虫又一个特别的地方是:宽度遍历爬虫是可定制的,根据某个网站订制..比如:抓取QQ空间,新浪微博等,都是需要登陆的...或者是有些网站的内容需要javascript来调用才能显示,那么就需要javascript解析引擎来保证抓取的质量.插件定制是我对垂直型爬虫做的又一个定义

       

3.爬虫的设计

    爬虫想起来复杂做起来其实一点也不复杂,简单来说就是网站链接发现,网站连接处理,链接下载---继续发现链接...

    进入一个网站首先需要提供这个网站的网址.例如:        http://www.baidu.com         那么得到百度之后就需要下载该页面,下载页面之后能发现几个链接.  http://news.baidu.com http://music.baidu.com   等, 获得这几个链接之后就是打开这几个链接,继续获得新的链接....一直持续下去...

    如果,仅仅是这样,那么爬虫就会'死'在这个网站...比如.在其他页面也会找到http;'//www.baidu.com 那么再进入这里.再一直这样循环...就真的死了..所以需要对链接进行有效的管理,去重等...   在这个抓取过程中,某个链接已经抓取过了,那么在链接发现,或者是链接下载的时候就可以直接把这个链接去掉,不进行下载.那么之后发现的链接会越来越少,那么整个网站的抓取也就会有个结束!

    OK,表达能力不是很好,简单总结,无论编写什么类型的爬虫,都需要这些:    链接发现--连接管理--链接下载--    那么也就获取到内容了.



4.垂直型爬虫的垂直?

    垂直型爬虫在刚开始做爬虫的时候我就再想为什么叫垂直型爬虫.现在写了那么久也不是很理解,我大概觉得垂直的意思是垂直获取,就好像是有目的有目标的直接去拿想要的东西,所以垂直...!

    垂直型爬虫跟普通型的爬虫不同的地方在于有目的性.相对于其他爬虫,目的性非常的明确.就好象我要拿一篇文章,其他的东西都不要,那么垂直型爬虫可以满足你!

    垂直型爬虫设计跟宽度遍历爬虫的设计区别也不是很大,一样.... 链接发现--连接管理--链接下载. 不过大部分的垂直型爬虫多了一个     信息提取         提取出所需的内容是对垂直型爬虫最大的考研,也是垂直型爬虫最重要的功能. 所以在垂直型爬虫上应该体现的是 链接发现-链接管理-链接下载等.!

     个人认为:垂直型爬虫更加适用于企业级,因为企业级所需资讯内容明确.而且垂直型爬虫更加的小型,便于管理.实现功能定制化.

文章转载自 开源中国社区[https://www.oschina.net]

相关文章
|
7月前
|
数据采集 运维 监控
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
|
11月前
|
数据采集 运维 监控
Serverless爬虫架构揭秘:动态IP、冷启动与成本优化
随着互联网数据采集需求的增长,传统爬虫架构因固定IP易封禁、资源浪费及扩展性差等问题逐渐显现。本文提出基于Serverless与代理IP技术的新一代爬虫方案,通过动态轮换IP、弹性调度任务等特性,显著提升启动效率、降低成本并增强并发能力。架构图与代码示例详细展示了其工作原理,性能对比数据显示采集成功率从71%提升至92%。行业案例表明,该方案在电商情报与价格对比平台中效果显著,未来有望成为主流趋势。
451 0
Serverless爬虫架构揭秘:动态IP、冷启动与成本优化
|
数据采集 数据库 Python
Python爬虫:滤网架构处理爬虫数据
Python爬虫:滤网架构处理爬虫数据
478 0
Python爬虫:滤网架构处理爬虫数据
|
数据采集 搜索推荐 Python
24、Python快速开发分布式搜索引擎Scrapy精讲—爬虫和反爬的对抗过程以及策略—scrapy架构源码分析图
【百度云搜索:http://www.lqkweb.com】 【搜网盘:http://www.swpan.cn】 1、基本概念 2、反爬虫的目的 3、爬虫和反爬的对抗过程以及策略 scrapy架构源码分析图
6119 0
|
数据采集 消息中间件 NoSQL
三种分布式爬虫系统的架构方式
分布式爬虫系统广泛应用于大型爬虫项目中,力求以最高的效率完成任务,这也是分布式爬虫系统的意义所在。 分布式系统的核心在于通信,介绍三种分布式爬虫系统的架构思路,都是围绕通信开始,也就是说有多少分布式系统的通信方式就有多少分布式爬虫系统的架构思路。
4487 0
|
Web App开发 存储 数据采集
分布式爬虫技术架构
Spiderman Spiderman 是一个Java开源Web数据抽取工具。它能够收集指定的Web页面并从这些页面中提取有用的数据。 Spiderman主要是运用了像XPath、正则、表达式引擎等这些技术来实现数据抽取。
1431 0
|
数据采集 中间件 调度
Python爬虫从入门到放弃(十二)之 Scrapy框架的架构和原理
这一篇文章主要是为了对scrapy框架的工作流程以及各个组件功能的介绍 Scrapy目前已经可以很好的在python3上运行Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。
1971 0
|
数据采集 中间件 数据处理
Python网络爬虫2 ---- scrapy爬虫架构介绍和初试
原文出处:http://my.oschina.net/dragonblog/blog/173290 上一篇文章的环境搭建是相对于手动操作的过程,而大家可能对这个疑问是什么是scrapy?为什么要用scrapy?下面主要是对这两个问题的简要回答。
2392 0
|
6月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路

热门文章

最新文章