网络爬虫的原理与应用(一)02

概述
网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫。基本结构图如下:
在这里插入图片描述

通用网络爬虫
网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。
传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件,流程图所示。

在这里插入图片描述
聚焦网络爬虫
聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止, 如图所示。

在这里插入图片描述

相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:
(1) 对抓取目标的描述或定义;
(2) 对网页或数据的分析与过滤;
(3) 对URL的搜索策略。

在这里插入图片描述
网络爬虫的基本工作流程如下:
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.深度优先遍历策略(DFS即Depth First Search)
深度优先遍历策略是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。
深度优先遍历的策略就是首先访问第一个邻接结点,然后再以这个被访问的邻接结点作为初始结点,访问它的第一个邻接结点。总结起来可以这样说:每次都在访问完当前结点后首先访问当前结点的第一个邻接结点。
这样的访问策略是优先往纵向挖掘深入,而不是对一个结点的所有邻接结点进行横向访问。 具体算法表述如下:

  1. 访问初始结点v,并标记结点v为已访问。
  2. 查找结点v的第一个邻接结点w。
  3. 若w存在,则继续执行4,否则算法结束。
  4. 若w未被访问,对w进行深度优先遍历递归(即把w当做另一个v,然后进行步骤123)。
  5. 查找结点v的w邻接结点的下一个邻接结点,转到步骤3。
    在这里插入图片描述
    • 其深度优先遍历顺序为 1->2->4->8->5->3->6->7

广度优先遍历策略
首先遍历A(第一层),接着BCDEF(第二层),然后遍历GH(第三层),最后遍历I(第四层)。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
其广度优先算法的遍历顺序为:1->2->3->4->5->6->7->8
最佳优先搜索策略
3、最佳优先搜索策略
最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。

假设节点的重要性为:D>B>C>A>E>F>I>G>H  按照最佳优先遍历的过程如下表:

在这里插入图片描述

   现代搜索引擎对网页的重要性一般用PR值来量化,该值越高,反映在在搜索结果中的排名越靠前(重要性越高)。

基于网络拓扑的网页分析算法介绍:
1 网页(Webpage)粒度的分析算法
PageRank和HITS算法是最常见的链接分析算法,两者都是通过对网页间链接度的递归和规范化计算,得到每个网页的重要度评价。

2 网站粒度的分析算法
网站粒度的资源发现和管理策略也比网页粒度的更简单有效。网站粒度的爬虫抓取的关键之处在于站点的划分和站点等级(SiteRank)的计算。SiteRank的计算方法与PageRank类似,但是需要对网站之间的链接作一定程度抽象,并在一定的模型下计算链接的权重。

3.基于网页内容的分析算法
基于网页内容的分析算法指的是利用网页内容(文本、数据等资源)特征进行的网页评价。网页的内容从原来的以超文本为主,发展到现在多媒体数据、Web Service等各种网络资源日益丰富。基于网页内容的分析算法也从原来的较为单纯的文本检索方法,发展为涵盖网页数据抽取、机器学习、数据挖掘、语义理解等多种方法的综合应用。
互联网是实时变化的,具有很强的动态性。网页更新策略主要是决定何时更新之前已经下载过的页面。常见的更新策略又以下三种:

  1. 用户参考策略
  2. 用户体验策略
  3. 聚类抽样策略

在这里插入图片描述

分布式抓取系统设计
网络爬虫的评价指标主要有:覆盖率、时效性、重复率。网络爬虫抓取系统需要面对的是整个互联网上数以亿计的网页。单个抓取程序不可能完成这样的任务。往往需要多个抓取程序一起来处理。分布抓取系统往往是一个分布式的三层结构。如图所示:
在这里插入图片描述

    这是一种没有中央服务器的爬虫结构。如图所示:

在这里插入图片描述分布式抓取系统协同工作的方式
对于一个数据中心内的不同抓去服务器,协同工作的方式有三种:
1.主从式Master-Slave)

对等式
在这里插入图片描述
一致性哈希

在这里插入图片描述

垂直爬虫架构
在这里插入图片描述

 抓取指定网站或论坛信息的网络爬虫,称为基于垂直架构的网络爬虫,主要功能如下:

• 从首页提取不同栏目列表页
• 对网页进行分类:将网页分成列表页、详细页或未知类型
• 列表页的链接提取:从列表页提取同一个栏目下的列表页
• 详细页面内容提取:从详细页提取网页标题、主要内容、发布信息等内容

下载网页———使用java.net.URL
使用JDK中Java.net.URL进行建模,通过构建URL对象来获得来自网络的输入流,进而像本地文件一样操作网络资源。
通过URL类提供的openStream( ),就可以读取一个URL对象所指定的资源,读取WWW信息,该方法定义如下:
public final InputStream openStream( )
方法openStream( )与指定的URL建立连接并返回一个InputStream对象,将URL位置的资源转成一个数据流。通过InputStream对象,就可以读取资源中的数据

在这里插入图片描述• 创建URL对象
• 使用URL对象的openStream()方法,返回一个InputStream。
• 从此InputStream读入即可。

在这里插入图片描述

下载网页———使用开源项目HttpClient
在这里插入图片描述
网页更新判断
判断页面是否更新,一般是发送head请求到目标页,根据响应的头部信息来进行分析判断。
在这里插入图片描述

在这里插入图片描述

判断依据有:
(1)Last-Modified最后修改时间
(2)Content-Leng页面内容大小
(3)Etag 网页版本标志
抓取限制应对
部分网站对同一IP有访问次数限制,可以考虑用如下应对方案:
(1)通过大量不同的Socket代理循环访问网站;
(2)重启路由更换公网IP;
(3)模拟浏览器发送类似的头信息,进行模拟访问

URL的提取——对于HTML中的URL
在这里插入图片描述

对应网页中的相对地址或者绝对地址,经常需要把相对地址转化为绝对地址。
也可以考虑使用JSOUP框架技术进行HTML页面的解析 。

在这里插入图片描述

URL的提取——对于JS中的URL

 一些页面的URL是嵌套在JavaScript中的,网络爬虫最好要具备一定的识别功能。

现阶段较优的解决方案是使用HtmlUnit框架进行解决。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
不过HtmlUnit对Jquery的支持不好,还有一种替代方案是使用selenium框架来抓取动态的JavaScript信息。

Summary
主要内容介绍了网络爬虫的基本工作原理与关键技术,并简单介绍了网络爬虫的抓取网络资源的各种方法,为搜索引擎的后续开发提供了更丰富的检索数据来源

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值