您现在的位置是:首页 > Python相关网站首页

网络爬虫技术简析

简介 网络爬虫技术的主要目标是将万维网上海量的数据整理,分类,索引,然后为我们所用...

网络爬虫技术类别

网络爬虫技术的主要目标是将万维网上海量的数据整理,分类,索引,然后为我们所用。

网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。而真正的的网络爬虫系统通常是好几种爬虫技术相结合实现的。

下面简单介绍下这几种爬虫类型的应用场景和它们之间的差别。

通用网络爬虫(Scalable Web Crawler)

通用网络爬虫又称全网爬虫,爬行对象是从一些种子 URL 扩充到整个 Web。主要作用是为门户站点搜索引擎和大型 Web 服务提供商采集数据。

通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用价值。例如谷歌和百度这种搜索引擎公司,都是通过通用网络爬虫获取网站数据,再将数据整理,备份,提供关键字给用户索引。

爬取流程
通用网络爬虫的结构大致可以分为页面爬行模块、页面分析模块、链接过滤模块、页面数据库、URL队列、初始URL集合几个部分。通过这些模块,搜索引擎可以高效地获取网站数据,加入到自己的索引库。其运行流程大致如下:

一、抓取网页。
搜索引擎一般都是使用网络爬虫爬取大量网站网页。它的运行步骤大致如下:

  1. 先选取一部分种子URL,将这些URL放入待抓取URL队列
  2. 取出待抓取URL,解析DNS得到主机的IP,并将URL对应的网页下载下来,存储进已下载网页库中,并且将这些URL放进已抓取URL队列。
  3. 分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环….
    对于新网站的URL,搜索引擎会和DNS解析服务商合作,使新网站的域名可以被迅速抓取。也可主动向搜索引擎提交网址,比如百度的http://zhanzhang.baidu.com/linksubmit/url

为提高爬取效率,通用网络爬虫会采取一定的爬行策略。常用的爬行策略有:深度优先策略、广度优先策略等。这涉及到算法相关的内容,在此我就不赘述了。

二、数据存储。
搜索引擎通过爬虫爬取到的网页,会将数据存入原始页面数据库。其中的页面数据内容与用户浏览器得到的HTML是完全一样的,比如百度快照,就是爬取时存储在百度自己的页面数据库中的网页界面。

三、数据分析
搜索引擎将爬虫抓取回来的页面,进行各种复杂的数据分析和处理。比如提取文字、消除噪音(例如导航内容,广告,版权声明等…)、索引处理、链接关系计算、特殊文件处理….

四、提供检索服务
搜索引擎在对信息进行组织和处理后,为用户提供关键字检索服务,将用户检索相关的信息展示给用户。
同时会根据页面的链接的访问量来进行网站排名,访问量高的网站在搜索结果中会排名较前。当然也可以直接使用 Money 购买搜索引擎网站排名,简单粗暴。

使用通用网络爬虫搭建的搜索引擎也有它的不足之处,如:

  1. 通用搜索引擎所返回的结果包含大量用户不关心的网页。
  2. 通用搜索引擎抓取动态页面效果不好,无法运行页面程序。
  3. 通用搜索引擎大多提供基于关键字的检索,无法准确理解用户的具体需求。
  4. 对图片、数据库、音频、视频多媒体等文件无能为力,不能很好地发现和获取。
  5. 通用搜索引擎用有限的搜索引擎服务器资源,终究无法获取到无限的网络数据资源。

聚焦网络爬虫(Focused Crawler)

简介
聚焦网络爬虫(Focused Crawler),又称主题网络爬虫(Topical Crawler)。聚焦网络爬虫主要解决现有爬虫抓取准确率不高的问题。

与通用爬虫不同,聚焦网络爬虫提供了另外一种爬取思路。聚焦爬虫并不追求大的覆盖,其主要目标是在有限的时间与网络带宽限制下尽可能多的采集与指定主题相关的高质量网页,忽略与主题无关或低质量的链接,从而大大提升用户搜索结果的精准度。

聚焦爬虫运行流程:

技术要求
相对于通用爬虫漫无目的的爬取,聚焦爬虫技术主要需要解决以下几个问题,来提高爬取目标的精准度:

  1. 对爬取目标的精准定义。这一步非常关键,一个明确的爬取目标,可以让我们在设置爬取规则的时候思路更加清晰,爬取失败率更低。
  2. 对爬取网址以及网站内容的过滤规则。因为聚焦网络爬虫对网页的抓取是有目的性的,所以与目标无关的网页将会被过滤掉。一个优秀的过滤规则能够极大提升爬取效率,节省大量硬件和网络资源。
  3. 建立一套良好的URL排序算法。对于聚焦网络爬虫来说,URL的排序顺序相当重要,不同的爬取顺序,可能导致爬虫的执行效率不同。所以,我们需要一套优秀的排序算法,让爬虫能够明确优先爬取哪些网页、以什么顺序爬取待爬取网页。

现有的聚焦爬行策略
聚焦网络爬虫增加了链接评价模块和内容评价模块。聚焦爬虫爬行策略实现的关键是页面内容和URL的重要性,不同的方法计算出的重要性不同,由此导致URL的访问顺序也不同。

现有聚焦爬虫的爬取策略有以下:

  1. 基于内容评价的爬行策略。简单来说,它使用用户输入的查询词作为主题,只爬取与查询词相关的网页。但是它无法判断页面内容与主题相关度的高低。但国外也有牛人提出了一个SharkSearch算法,利用空间向量模型计算页面与主题的相关度大小。
  2. 基于增强学习的爬行策略。这个算法利用贝叶斯分类器,根据整个网页文本和链接文本对超链接进行分类,为每个链接计算出重要性,从而决定链接的访问顺序。
  3. 基于上下文语境的爬行策略:这个爬行策略是训练一个机器学习系统,从语义角度分析网页内容与主题的重要程度,以此来决定URL的访问顺序。

当前网络上对聚焦爬虫的抓取策略研究还有很多,而且经过近几年机器学习的兴起,未来的抓取策略一定会更加优秀。

增量式网络爬虫(Incremental Web Crawler)

增量式网络爬虫主要解决的问题是,对已下载网页进行更新,或只爬行新产生和发生变化的网页,它能够在一定程度上保证所爬行的页面是尽可能新的页面。

增量式网络爬虫的体系结包含爬行模块、排序模块、更新模块、本地页面集、待爬行 URL集以及本地页面URL集。

增量式爬虫常用的爬取方法有:
统一更新法:爬虫以相同的频率访问所有网页,不考虑网页的改变频率。此方法也会爬取到未更新的网页,所以资源耗费也比较大。
个体更新法:爬虫根据个体网页的改变频率来重新访问各页面。
基于分类的更新法:爬虫根据网页改变频率将其分为更新较快网页子集和更新较慢网页子集两类,然后以不同的频率访问这两类网页。

深层网络爬虫(Deep Web Crawler)

Web 页面按存在方式可以分为表层网页和深层网页。
– 表层网页是指传统搜索引擎可以索引的页面,例如超链接可以达到的静态页面。
– 深层网页是那些大部分内容不能通过静态链接获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的Web页面,比如那些只有用户注册才能访问到的网页。

深层网络爬虫解决的就是通用爬虫无法爬取到的深层网页。

深层网络爬虫体系结构包含六个基本功能模块(爬行控制器、解析器、表单分析器、表单处理器、响应分析器、LVS 控制器)和两个爬虫内部数据结构(URL 列表、LVS 表)。其中 LVS(Label Value Set)表示标签/数值集合,用来表示填充表单的数据源。

爬取深层页面,需要想办法自动填写好对应表单,所以,深层网络爬虫最重要的部分即为表单填写部分。当前有以下两种方法:
– 基于领域知识的表单填写:此方法简单来说会根据网站内容建立一个文本库,通过分析语义来选取合适的关键词填写表单。
– 基于网页结构分析的表单填写:此方法将网页表单解析成DOM树结构,然后根据某些算法自动进行表单填写。

网络爬虫的应用领域

上面讲了这么多,大家对网络爬虫的类型和每种类型的应用场景应该有了大概的了解。那么网络爬虫在现实中的应用领域有哪些呢?下面来简单看下:

搜索引擎。爬虫技术主要就是为搜索引擎定制的,而搜索引擎是互联网的入口,能够带来大量的用户流量资源。
爬取金融信息。可以爬取金融领域的数据,做投资分析。
爬取网站图片。
优化页面功能我们可以利用爬虫爬取新闻,文章,集中阅读。
优化页面功能。我们可以从互联网中采集目标用户的联系方式等数据,用于网络营销使用。
……
除此之外,爬虫还可以实现很多强大的功能。总之,爬虫的出现,在一定程度上代替了手工访问网页,原先我们需要人工去访问互联网信息的操作,现在都可以用爬虫自动化实现,这样可以更高效率地利用好互联网中的有效信息。

小结

通过本文章你可以了解到当前网络爬虫的类型、每种类型解决的问题和解决方法,以及网络爬虫的应用领域。

文章评论

Top Error:远程服务器返回错误: (403) 已禁止。