本文转载至 http://www.cnblogs.com/wawlian/archive/2012/06/18/2553061.html

网络爬虫是捜索引擎抓取系统的重要组成部分。爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份。这篇博客主要对爬虫以及抓取系统进行一个简单的概述。

一、网络爬虫的基本结构及工作流程

一个通用的网络爬虫的框架如图所示:

网络爬虫的基本工作流程如下:

1.首先选取一部分精心挑选的种子URL;

2.将这些URL放入待抓取URL队列;

3.从待抓取URL队列中取出待抓取在URL,解析DNS,并且得到主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。

4.分析已抓取URL队列中的URL,分析其中的其他URL,并且将URL放入待抓取URL队列,从而进入下一个循环。

二、从爬虫的角度对互联网进行划分

对应的,可以将互联网的所有页面分为五个部分:

1.已下载未过期网页

2.已下载已过期网页:抓取到的网页实际上是互联网内容的一个镜像与备份,互联网是动态变化的,一部分互联网上的内容已经发生了变化,这时,这部分抓取到的网页就已经过期了。

3.待下载网页:也就是待抓取URL队列中的那些页面

4.可知网页:还没有抓取下来,也没有在待抓取URL队列中,但是可以通过对已抓取页面或者待抓取URL对应页面进行分析获取到的URL,认为是可知网页。

5.还有一部分网页,爬虫是无法直接抓取下载的。称为不可知网页。

三、抓取策略

在爬虫系统中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL以什么样的顺序排列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定这些URL排列顺序的方法,叫做抓取策略。下面重点介绍几种常见的抓取策略:

1.深度优先遍历策略

深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。我们以下面的图为例:

遍历的路径:A-F-G  E-H-I B C D

2.宽度优先遍历策略

宽度优先遍历策略的基本思路是,将新下载网页中发现的链接直接插入待抓取URL队列的末尾。也就是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此网页中链接的所有网页。还是以上面的图为例:

遍历路径:A-B-C-D-E-F G H I

3.反向链接数策略

反向链接数是指一个网页被其他网页链接指向的数量。反向链接数表示的是一个网页的内容受到其他人的推荐的程度。因此,很多时候搜索引擎的抓取系统会使用这个指标来评价网页的重要程度,从而决定不同网页的抓取先后顺序。

在真实的网络环境中,由于广告链接、作弊链接的存在,反向链接数不能完全等他我那个也的重要程度。因此,搜索引擎往往考虑一些可靠的反向链接数。

4.Partial PageRank策略

Partial PageRank算法借鉴了PageRank算法的思想:对于已经下载的网页,连同待抓取URL队列中的URL,形成网页集合,计算每个页面的PageRank值,计算完之后,将待抓取URL队列中的URL按照PageRank值的大小排列,并按照该顺序抓取页面。

如果每次抓取一个页面,就重新计算PageRank值,一种折中方案是:每抓取K个页面后,重新计算一次PageRank值。但是这种情况还会有一个问题:对于已经下载下来的页面中分析出的链接,也就是我们之前提到的未知网页那一部分,暂时是没有PageRank值的。为了解决这个问题,会给这些页面一个临时的PageRank值:将这个网页所有入链传递进来的PageRank值进行汇总,这样就形成了该未知页面的PageRank值,从而参与排序。下面举例说明:

5.OPIC策略策略

该算法实际上也是对页面进行一个重要性打分。在算法开始前,给所有页面一个相同的初始现金(cash)。当下载了某个页面P之后,将P的现金分摊给所有从P中分析出的链接,并且将P的现金清空。对于待抓取URL队列中的所有页面按照现金数进行排序。

6.大站优先策略

对于待抓取URL队列中的所有网页,根据所属的网站进行分类。对于待下载页面数多的网站,优先下载。这个策略也因此叫做大站优先策略。

参考书目:

1.《这就是搜索引擎——核心技术详解》  张俊林  电子工业出版社

2.《搜索引擎技术基础》         刘奕群等 清华大学出版社

author:wawlian
save me from myself

转载于:https://www.cnblogs.com/Camier-myNiuer/p/4279523.html

网络爬虫基本原理(一)相关推荐

  1. 网络爬虫基本原理(二)

    四.更新策略 互联网是实时变化的,具有很强的动态性.网页更新策略主要是决定何时更新之前已经下载过的页面.常见的更新策略又以下三种: 1.历史参考策略 顾名思义,根据页面以往的历史更新数据,预测该页面未 ...

  2. 搜索引擎技术之网络爬虫

    阅读目录 1. 网络爬虫技术基本工作流程和基础架构 2. 网络爬虫的抓取策略 3. 网络爬虫更新策略 4. 分布式抓取系统结构 5. 参考内容 >>>> 随着互联网的大力发展, ...

  3. 【浅谈爬虫】一名合格的Python爬虫工程师必须具备技能—具体了解四大Python爬虫分类以及爬虫基本原理实现

    一.网络爬虫概述 网络爬虫(又被称作为网络蜘蛛.网络机器人,在某社区中经常被称为网页追逐者),可以按照指定的规则(网络爬虫的算法)自动浏览或抓取网络中的信息,通过Python可以很轻松地编写爬虫程序或 ...

  4. 网络爬虫的原理和案例

    有一个专门爬虫的网站:http://www.shenjianshou.cn/ 网络爬虫基本原理 网络爬虫是捜索引擎抓取系统的重要组成部分.爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的 ...

  5. 【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用

    [网络爬虫入门02]HTTP客户端库Requests的基本原理与基础应用 广东职业技术学院  欧浩源 2017-10-15  1.引言 实现网络爬虫的第一步就是要建立网络连接并向服务器或网页等网络资源 ...

  6. 和移动对接短信http协议和cmpp协议那个好_python网络爬虫之HTTP原理,爬虫的基本原理,Cookies和代理介绍...

    一.HTTP基本原理 (一)URI和URL URI的全称为统一资源标志符,URL的全称为统一资源定位符.用来指定一个资源的访问方式,包括访问协议,访问路径和资源名称,从而找到需要的资源(网页的内容都是 ...

  7. 【Python3网络爬虫开发实战】 2.3-爬虫的基本原理

    [摘要] 我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛.把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息.可以把节点间的连线比作网页与网页之间的链接关系 ...

  8. 爬虫的基本原理:网络爬虫、爬虫基本流程、解析方式、保存数据

    爬虫的基本原理:网络爬虫.爬虫基本流程.解析方式 网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集 ...

  9. Python网络爬虫的概念和基本原理

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本文章来自腾讯云 作者:Python进阶者 想要学习Python?有问题得不到第一 ...

最新文章

  1. 技术图文:如何通过 LINQ 查找集合中的重复数据?
  2. 001_JavaScript简介
  3. JSON——IT技术人员都必须要了解的一种数据交换格式
  4. nginx安装及负载均衡配置
  5. jQuery动画与事件概念以及语法
  6. python构建矩阵 x y_生成Python函数一半没问题,当前最正统的代码生成是什么样的?...
  7. 一个 bug ,罚款 200,我真待过这样的公司
  8. Cesium官方教程6--相机
  9. mate10鸿蒙测试版,华为鸿蒙 2.0 开发者公测版 Bata 3 更新:增加三个鸿蒙应用
  10. 安装好数据库 提示计算机无法启动,DBC数据库异常无法启动!!!HERODB配置错误怎么解决呢?...
  11. php蝠衭厍桴埭钨,有没办法判断输入汉字的笔划数?
  12. java 找出重复的数字
  13. Android使用BottomNavigationView+NavigationUI报错
  14. 时序分析基本概念介绍Slew/Transition
  15. 蔡学镛[散文随笔]:从A到E+ (转)
  16. 开式系统管径推荐选型_中央空调水系统设计(经典版)
  17. wav2lip:Accurately Lip-syncing Videos In The Wild
  18. 苹果重新设计开源官网;阿里云开放 YoC 源代码;GitHub 开发 Code Search 功能 | 开源日报
  19. 使用DOM4J解析XML文档,输出所有学员信息和添加学生信息
  20. mt7 android6.0 回退,Mate7 M版本(Android 6.0)B553发布说明及问题反馈

热门文章

  1. 从JAVA转学习Go——Go在eclipse的环境搭建
  2. 风口摔死的飞猪:致那些“消失”的互联网创业项目
  3. 01背包java 源码
  4. 网站的高性能架构--web前端优化
  5. redis的flushall命令
  6. zTree新增的根结点再新增子节点reAsyncChildNodes不生效解决方案
  7. 授以渔 - Autodesk Forge 学习简谈 - 引言
  8. CentOS 6.7安装python3.5
  9. Maven提高篇系列之(五)——处理依赖冲突
  10. 安卓自动化测试(1)安卓自动化测试原理概念