c爬虫抓取网页数据(网络爬虫的基本工作流程:1.的发展基本流程)

优采云 发布时间: 2021-12-05 09:02

  c爬虫抓取网页数据(网络爬虫的基本工作流程:1.的发展基本流程)

  下面是一个很有启发的文章先分享给大家。

  信息论的发展

  通过上一篇我们了解了爬虫的具体工作后,我们分析的网络爬虫的基本工作流程如下:

  1.首先选择一些精心挑选的*敏*感*词*网址;

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

  3. 从待爬取的URL队列中取出待爬取的URL,解析DNS,获取主机IP,下载该URL对应的网页,并存入下载的网页库中。另外,将这些网址放入已爬取的网址队列中。

  4.对爬取的URL队列中的URL进行分析,分析其中的其他URL,将这些URL放入URL队列进行爬取,从而进入下一个循环。

  一、爬虫设计

  从爬虫的角度来划分互联网,互联网的所有页面可以分为五个部分:

  1.下载了未过期的网页

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

  3.要下载的页面:URL队列中要爬取的那些页面

  4. 已知网页:尚未被抓取,也不在待抓取的 URL 队列中,但通过分析抓取的页面或待抓取的 URL 对应的页面得到的 URL,被认为是一个已知网页。

  5. 还有一些网页是爬虫无法直接抓取下载的。它被称为不可知页面。

  我们爬虫项目的主要事件流程大致如下:

  1.获取命令行参数并进行相应操作

  2. 读取配置文件,解析各种设置

  3.加载各种模块

  4. *敏*感*词*入队,启动DNS解析线程(原队列不为空时解析)

  5.创建epoll,启动任务,发起请求等,关注事件

  6.在while循环中,使用epoll_wait返回active事件,每个事件启动一个线程处理(线程主要解析页面,保存页面,url处理等),可能在开始一个新的任务线程的结尾。(或者在程序初始化的时候创建一个线程池,没有任务的时候阻塞线程,通过pthread_cond_signal唤醒睡眠队列中的线程,但是一个页面解析出来的有效url会很多。这个时候,我们甚至需要在队列满时阻塞分析页面url线程,使用线程池的好处是减少线程创建和销毁的系统开销)

  在爬虫系统中,要爬取的URL队列是一个非常重要的部分。URL队列中要爬取的URL按什么顺序排列也是一个很重要的问题,因为它涉及到先爬哪个页面,后爬哪个页面。确定这些 URL 顺序的方法称为抓取策略。下面重点介绍几种常见的爬取策略(关于爬取策略优劣分析的建议,请阅读吴军老师《数学之美》第9章和第10章):

  1.深度优先遍历策略

  深度优先遍历策略是指网络爬虫会从起始页开始,逐个跟踪每一个链接,处理完这一行后转移到下一个起始页,继续跟踪链接。

  2.广度优先遍历策略

  广度优先遍历策略的基本思想是将新下载的网页中找到的链接直接插入到待爬取的URL队列的末尾。即网络爬虫会先抓取起始网页中所有链接的网页,然后选择其中一个链接的网页,继续抓取该网页中链接的所有网页。以上图为例:

  3.反向链接计数策略

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

  在真实的网络环境中,由于广告链接和作弊链接的存在,反向链接的数量不能完全坐等别人的重视。因此,搜索引擎通常会考虑一些可靠的反向链接。

  4.部分PageRank策略

  Partial PageRank算法借鉴了PageRank算法的思想:对于下载的网页,连同要爬取的URL队列中的URL,组成一个网页集,计算每个页面的PageRank值,经过计算完成后,将要爬取的URL队列中的URL按照PageRank值的大小进行排列,依次爬取页面。

  如果每个页面都被抓取,则重新计算 PageRank 值。一个折衷的方案是:每爬取K个页面后,重新计算PageRank值。但是,在这种情况下仍然存在一个问题:对于下载页面中分析的链接,即我们前面提到的未知网页部分,暂时没有PageRank值。为了解决这个问题,这些页面会被赋予一个临时的PageRank值(比如1):对这个页面所有链接传入的PageRank值进行汇总(其实大矩阵计算是重复,未知站点的PageRank值会逐渐收敛到它的期望值。说实话,收敛是我个人认为这个算法最漂亮的部分),从而形成未知页面的PageRank值,

  5.OPIC 策略 策略

  该算法实际上对页面的重要性进行评分。在算法开始之前,给所有页面相同的初始*敏*感*词*(cash)。下载某个页面P后,将P的*敏*感*词*分配给所有从P解析的链接,清空P的*敏*感*词*。待抓取的 URL 队列中的所有页面均按照*敏*感*词*的数量进行排序。

  6.大站优先策略

  URL队列中所有要爬取的网页,按照所属的网站进行分类。网站需要下载的页面较多,优先下载。这种策略因此被称为大站优先策略。

  在下面

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线