《自己动手写网络爬虫》读书笔记——宽度优先爬虫和带偏好的爬虫
前面只是获取了单个网页内容,在实际中,则使用爬虫程序遍历互联网,把网络中相关的网页全部抓取过来,这也体现了爬虫程序“爬”的概念。
互联网可以看成一个超级大的“图',而每个网页则可以看作是一个”节点“。页面中的链接可以看成是图的”有向边“。因此,可以通过图的遍历的方式对互联网这个”图“进行访问。图的遍历分为宽度优先和深度优先,但深度优先可能会在深度上过于”深”的遍历或者陷入“黑洞”,大多数爬虫都不采用这种方式。此外,在爬取的时候,有时候并不会完全按照宽度优先遍历的方式,而是给待遍历的网页赋予一定的优先级,根据这个优先级进行遍历,这种遍历方式又被称为带偏好的遍历。
有关于图的宽度遍历的知识这里不予详细介绍,主要看一下宽度优先遍历。
实际的爬虫项目是从一系列的种子链接开始的,所谓种子链接就相当于宽度优先遍历中的种子节点,只是实际爬虫项目中种子链接可以有多个,而宽度优先遍历中的种子节点只有一个。
如何定义一个链接的子节点?每个链接对应一个HTML页面或者其他文件(word、excel、pdf等),在这些文件中,只有HTML页面有相应的“子节点”,这些“子节点”就是HTML页面上对应的超链接。这些子节点本身又是一个链接。对于非HTML文档,不能从中提取超链接。因此,可以看作图的“终端”节点。
整个宽度优先爬虫过程就是从一系列的种子节点开始,把这些网页中的“子节点”提取出来,放入队列中以此进行抓取。被处理过的链接需要放入一张表(通常称为Visited表)中,每次处理新链接之前,需要查看这个链接是否已经存在于Visited表中。如果存在,证明链接已经处理过,跳过,不做处理,否则进行下一步处理。整个过程如下图所示:
宽度优先遍历是爬虫中使用最广泛的一种爬虫策略,之所以使用宽度优先搜索策略,主要原因有三点:
1)重要的网页往往里种子较近;
2)万维网的实际深度最多能达到17层,但到达某个网页总存在一条很短的路径,而宽度优先遍历会以最快的速度到达这个网页;
3)宽度优先有利于多爬虫的合作抓取,多爬虫合作通常弦抓取站内链接,抓取的封闭性很强。
转载于:https://www.cnblogs.com/bianjun/p/4508908.html
《自己动手写网络爬虫》读书笔记——宽度优先爬虫和带偏好的爬虫相关推荐
- 《自己动手写操作系统》读书笔记——初识保护模式
<自己动手写操作系统>读书笔记--初识保护模式 http://www.cnblogs.com/pang123hui/archive/2010/11/27/2309930.html 书本第三 ...
- 记录《自己动手写网络爬虫 》书中涉及的内容学习一些算法
第1篇 自己动手抓取数据 第1章 全面剖析网络爬虫 3 1.1 抓取网页 4 1.1.1 深入理解URL 4 1.1.2 通过指定的URL抓取 网页内容 6 1.1.3 Java网页抓取示 ...
- 《自己动手写Docker》学习笔记2
<自己动手写Docker>学习笔记2 1 前言 由于本人毕业设计与云原生领域相关,因此最近在学习Docker相关知识,<自己动手写Docker>涵盖了Docker底层的各类知识 ...
- 《跟我一起写makefile》读书笔记
前言 本文为<跟我一起写makefile>读书笔记,是自己在学makefile时候自己感觉比较全面的学习资料. 文章目录 前言 关于程序的编译和链接 概述 关于程序的编译和链接 maekf ...
- 计算机读书笔记10000,网络营销读书笔记10000字
网络营销读书笔记10000字 第6章 电子邮件营销 作为网站运营者的你,拿到潜在客户的电子邮件地址,也就拿到后续沟通.不断提醒潜在用户存在的权利. 任何情况下都不要使用垃圾邮件. 电子邮件营销之所以效 ...
- 2 宽度优先爬虫和带偏好的爬虫(4)
5 Java带偏好的爬虫示例 在上一节中,我们已经指出,可以使用优先级队列(PriorityQueue)来实现这个带偏好的爬虫.在深入讲解之前,我们首先介绍优先级队列. 优先级队列是一种特殊的队列,普 ...
- UNIX网络编程--读书笔记
会集中这段时间写UNIX网络编程这本书的读书笔记,准备读三本,这一系类的文章会不断更新,一直会持续一个月多,每篇的前半部分是书中讲述的内容,每篇文章的后半部分是自己的心得体会,文章中的红色内容是很重要 ...
- 2 宽度优先爬虫和带偏好的爬虫(2)
接上节 3 Java 宽度优先爬虫示例 本节使用java实现一个简易的爬虫.其中用到了HttpClient和HtmlParser两个开源工具包.HttpClient的内容之前已经做过详细的阐述.有关H ...
- 从零开始学python网络爬虫读书笔记_从零开始学Python网络爬虫 中文pdf
资源名称:从零开始学Python网络爬虫 中文pdf 第1章 Python零基础语法入门 1 第2章 爬虫原理和网页构造 17 第3章 我的第一个爬虫程序 26 第4章 正则表达式 45 第5章 Lx ...
- 自己动手写网络抓包工具
看了太多的"自己动手",这次咱也"自己动手"一下,写个简单的网络抓包工具吧.要写出像tcpdump和wireshark(ethereal)这样的大牛程序来,咱也 ...
最新文章
- Xamarin ios C#苹果应用开发第二讲配置环境和编写代码
- 微信进行证书相关操作(退款,发放优惠券等)时报System.Security.Cryptography.CryptographicException: 出现了内部错误。...
- custom field further usage - add into UI and report
- 字符串匹配(多模式匹配篇)
- 为什么强烈禁止开发人员使用isSuccess作为变量名
- php7 memcached sasl,Mac安装memcached扩展支持sasl
- takephoto 框架_GitHub - Smecking/TakePhoto: 一款用于在Android设备上获取照片(拍照或从相册、文件中选择)、裁剪图片、压缩图片的开源工具库...
- 剑指offer面试题[60]-将二叉树打印成多行
- Hive编程指南pdf
- JMeter数据库操作详解
- DEVC配置C++11标准
- 中职生c语言搜题软件,适合法考学生用的搜题软件,这几款帮你搞定!
- android 编写计时器,Android用5种方式实现自定义计时器, 哪种才是你的菜?
- VS2017调试程序提示脚本错误解决方法
- discuz制作自己的门户列表模板
- 波士顿大学计算机工程硕士,波士顿大学电气与计算机工程理学硕士
- deep learning 入门
- Pandas操作Excel,统计pass/fail的个数
- 戴尔3040计算机没有VGA接口,电脑没有vga接口怎么办
- Git本地文件上传到远程仓库