爬虫抓取网页数据(通用爬虫框架如下图:通用的爬虫框架通用框架流程)
优采云 发布时间: 2021-11-06 12:04爬虫抓取网页数据(通用爬虫框架如下图:通用的爬虫框架通用框架流程)
2. 搜索引擎爬虫架构
但是浏览器是用户主动操作然后完成HTTP请求,而爬虫需要自动完成http请求,而网络爬虫需要一套整体架构来完成工作。
虽然爬虫技术经过几十年的发展从整体框架上已经比较成熟,但是随着互联网的不断发展,它也面临着一些具有挑战性的新问题。一般的爬虫框架如下:
通用爬虫框架
一般爬虫框架流程:
1)首先,从互联网页面中仔细选择一些网页,并将这些网页的链接地址作为*敏*感*词*URL;
2)将这些*敏*感*词*网址放入待抓取的网址队列;
3) 爬虫依次从待爬取的URL队列中读取,通过DNS解析URL,将链接地址转换为网站服务器对应的IP地址。
4)然后将网页的IP地址和相对路径名传递给网页下载器,
5)网页下载器负责下载页面的内容。
6)对于本地下载的网页,一方面存储在页面库中,等待索引等后续处理;另一方面,将下载的网页的网址放入已爬取的网址队列中,该队列中记录了爬虫系统已经下载的网页的网址,以避免对网页的重复抓取。
7)对于新下载的网页,提取其中收录的所有链接信息,在爬取的URL队列中查看。如果发现该链接没有被抓取,那么这个URL就会被放置到被抓取的URL团队中!
8、在9)的末尾,该URL对应的网页会在后续的爬取调度中下载,以此类推,形成一个循环,直到待爬取的URL队列为空。
3. Crawler 爬取策略
在爬虫系统中,要爬取的URL队列是一个非常重要的部分。URL队列中要爬取的URL的顺序也是一个很重要的问题,因为它涉及到先爬哪个页面,后爬哪个页面。确定这些 URL 顺序的方法称为抓取策略。
3.1 深度优先搜索策略(顺藤摸瓜)
即图的深度优先遍历算法。网络爬虫会从起始页开始,逐个跟踪每一个链接,处理完这一行后跳转到下一个起始页,继续跟踪链接。
我们用图表来说明:
我们假设互联网是一个有向图,图中的每个顶点代表一个网页。假设初始状态是图中所有的顶点都没有被访问过,那么深度优先搜索可以从图中的某个顶点开始,访问这个顶点,然后从v的未访问过的相邻点进行到深度优先遍历图,直到图中所有具有连接到v的路径的顶点都被访问;如果此时图中还有没有被访问过的顶点,则选择图中另一个没有被访问过的顶点作为起点,重复上述过程,直到图中所有顶点都被访问过迄今为止。
以下图所示的无向图G1为例,对图进行深度优先搜索:
G1
搜索过程:
假设搜索和爬取是从顶点页面v1开始的,在访问页面v1后,选择相邻点页面v2。因为v2之前没有访问过,所以从v2开始搜索。以此类推,搜索从 v4、v8 和 v5 开始。访问 v5 后,由于 v5 的所有相邻点都已访问过,搜索返回到 v8。出于同样的原因,搜索继续回到 v4、v2 直到 v1。此时,由于没有访问过v1的另一个相邻点,搜索从v1到v3,然后继续。由此,得到的顶点访问序列为:
3.2 广度优先搜索策略
广度优先遍历策略的基本思想是将新下载的网页中找到的链接直接插入到待爬取的URL队列的末尾。即网络爬虫会先抓取起始网页中链接的所有网页,然后选择其中一个链接的网页,继续抓取该网页中链接的所有网页。该算法的设计和实现比较简单。目前,为了覆盖尽可能多的网页,一般采用广度优先搜索的方法。也有许多研究将广度优先搜索策略应用于聚焦爬虫。基本思想是,距离初始 URL 一定链接距离内的网页具有很高的主题相关性概率。另一种方法是将广度优先搜索与网络过滤技术相结合。首先使用广度优先策略抓取网页,然后过滤掉不相关的网页。这些方法的缺点是随着抓取网页的增多,会下载和过滤大量不相关的网页,算法的效率会变低。
以上图为例,爬取过程如下:
广度搜索过程:
首先访问页面v1和v1的邻点v2和v3,然后依次访问v2的邻点v4和v5以及v3的邻点v6和v7,最后访问v4的邻点v8。由于这些顶点的相邻点都被访问过,并且图中的所有顶点都被访问过,所以对图的这些遍历就是由这些完成的。得到的顶点访问顺序为:
v1→v2→v3→v4→v5→v6→v7→v8
<p>与深度优先搜索类似,遍历过程中也需要一组访问标志。另外,为了顺序访问路径长度为2、3、...的顶点,必须附加一个队列来存储路径长度为1、