爬虫一般指网络爬虫,又名网页蜘蛛,蠕虫等,是一种按照一定等规则,自动抓取网页内容的程序或者脚本。
产生
相信大家在网络上都有使用过百度,Yahoo,Google等等搜索引擎来搜索资料等等,这些辅助人们检索信息都工具是我们访问万维网都入口和指南,随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战,一种搜集、分析、过滤、决策等功能集于一身等程序应运而生–网络爬虫,其作为搜索引擎的数据基础,是搜索引擎的重要组成部分。
原理
传统的网络爬虫从一个或多个网页的初始url开始,获取这些初始url内容中的新的url,在抓取网页的过程中,不断的从当前页面上抽取出新的url放入到url列列中,直到满足预定的条件时停止。
一些具有特定策略的爬虫工作流程较为复杂,例如聚焦爬虫,他们会根据一定的网页分析算法过滤和主题无关的连接,只保留那些跟主题相关的连接放入到url队列中,然后,他们会根据一定的搜索策略从队列中选择下一步要抓取的网页url,并重复上述过程,直到达到系统的某一条件停止。
ps:搜索引擎系统则将爬虫抓取的网页存储,进一步的分析、过滤,并建立索引,以便之后查询和检索。
爬虫分类
网络爬虫按照系统结构和实现技术,大致可以分为一下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫,实际的网络爬虫系统通常都是几种爬虫技术相结合实现的。
通用网络爬虫
通用网络爬虫的爬行对象从一些种子url扩充到整个Web,主要为门户站点搜索引擎和大型Web服务提供商采集数据。
爬虫的结构大致可以分为初始url、url队列、页面爬行模块、页面分析模块、连接过滤模块、页面数据库集合几个部分。
常用的爬行策略有:深度优先策略、广度优先策略。
聚焦网络爬虫
聚焦网络爬虫又称为主题网络爬虫,是指选择性地爬行那些与预先定义好的主题相关页面的网络爬虫。和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省来硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求。
和普通网络爬虫相比,聚焦网络爬虫增加来连接评价模块以及内容评价模块。聚焦爬虫爬行策略实现的关键是评价页面内容和连接的重要性,不同的方法计算出的重要性不同,由此导致连接的访问顺序也不同。
常用的爬虫策略有:基于内容评价的爬行策略、基于连接结构评价的爬行策略、基于增强学习的爬行分类、基于语境图的爬行策略。
增量式网络爬虫
增量式网络爬虫是指对已下载网页采取增量式更新和只爬行新产生对或者已经发生变化的网页爬行,它能够在一定程度上保证爬行的页面是尽可能新的页面。和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或者发生更新的页面,并不重新下载没有发生变化的页面,可以有效减少数据下载量,及时更新已经爬行的网页,减少时间和空间上的消耗,但是这会增加爬行算法和复杂度和实现难度。
增量式网络爬虫的体系结构包含:爬行模块、排序模块、更新模块、本地页面集、待爬行url集及本地页面url集。
Deep Web 爬虫
Web 页面按存在方式可以分为表层网页和深层网页。Surface Web 是指一些静态网页为主构成Web 页面,Deep Web是那些动态网页,及大部分内容只有用户提交一些关键词才能获得的 Web 页面。Deep Web 中可访问的信息容量是 Surface Web 的几百倍,是互联网上最大、发展最快的新型信息资源。
Deep Web 爬虫体系结构包含六大基本功能模块(爬行控制器、解析器、表单分析器、响应分析器、LVS控制器)和两个爬虫内部数据结构(URL列表、LVS表)。其中 LVS(Label Value Set)表示标签/数值集合,用来表示填充表单的数据源。
Deep Web 爬虫爬行过程中最重要部分就是表单填写,包含两种类型: 基于领域知识的表单填写、基于网页结构分析的表单填写
抓取的目标分类
基于目标网页特征
基于这种特征的爬虫所抓取、存储并索引的对象一般为网站和网页。网页特征可以是网页的内容特征,也可以是网页的连接结构特征等等
基于目标数据
这类爬虫正对的是网页上的数据,所抓取的数据一般要符合一定的模式,或者可以转化或映射为目标数据
基于领域概念
建立目标领域的本体或词典,用于从语义角度分析不同特征在某一主题中的重要程度
网页搜索策略
网页的抓取策略可以分为深度优先、广度优先和最佳优先三种,其中深度优先在很多情况下会导致爬虫的陷入问题,目前最常见的是后两种方式。
广度优先策略
广度优先策略是指在抓取的过程中,在完成当前层次的搜索后,才进行下一层次的搜索。
为覆盖尽可能多的网页,一般使用广度优先搜索方法。我们可以将广度优先搜索和网页过滤技术结合使用,缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,这一过程使得算法的效率将变低。
最佳优先策略
最佳优先策略会按照一定的网页分析算法,预测候选url与目标网页的相似度,或者和主题的相关性,并选取评价最好的一个或者几个url进行抓取,它只访问经过网页分析算法预测为‘有用‘的网页。因此会存在一个问题,在爬虫抓取路径上的很多相关网页可能被忽略。
深度优先策略
深度优先策略会从起始网页开始,选择一个url进入,分析网页中的url,选择一个在进入,如此一个连接一个连接地抓取下去,直到处理完一条路线之后在回到起始入口,选择下一条路线。这种缺点也是致命的,因为过度的深入抓取,所抓取的数据价值往往会很低,同时,抓取的深度直接影响着抓取命中率和抓取效率,相对其他两种策略,这种策略很少被使用。