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

回复 星标
更多
垂直型爬虫架构设计(1)
.
.
.
.

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

爬虫的分类

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

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

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

爬虫的架构

1.宽度遍历爬虫.

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

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

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

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

2.垂直型爬虫.

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

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

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

3.爬虫的设计.

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

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

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

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

4.垂直型爬虫的垂直?

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

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

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

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

华丽的分隔线

相关文章:垂直型爬虫架构设计(2)

原文地址:http://my.oschina.net/CainGao/blog/506492

2015-09-16 13:48:49更新过
新窗口打开 关闭