詹惠儿

2018-11-29   阅读量: 650

数据分析师 Python编程 Python爬虫 Python数据分析

什么是URL前沿?

扫码加入数据分析学习群

节点的URL前沿由其爬网过程(或另一个爬网过程的主机拆分器)提供URL。它维护边界中的URL,并在爬虫程序线程寻找URL时以某种顺序对它们进行反刍。两个重要的考虑因素决定了边界返回URL的顺序。首先,频繁更改的高质量页面应优先进行频繁爬行。因此,页面的优先级应该是其变化率和质量的函数(使用一些合理的质量估计)。这种组合是必要的,因为大量的垃圾邮件页面在每次获取时都会完全改变。

第二个考虑因素是礼貌:我们必须避免在短时间内对主机重复获取请求。由于某种形式的参考地点,这种情况的可能性会加剧:许多网址链接到同一主机上的其他网址。因此,实现为简单优先级队列的URL前沿可能会导致向主机发送突发请求。即使我们要约束爬网程序,以便最多一个线程可以随时从任何单个主机获取,也可能发生这种情况。常见的启发式方法是在对主机的连续提取请求之间插入一个间隙,该间隙比从该主机最近提取的时间大一个数量级。

其目标是确保(i)每次只有一个连接对任何主机开放; (ii)在对主机的连续请求和(iii)优先爬行高优先级页面之间发生几秒的等待时间。

两个主要的子模块是图中上部的一组前队列,下部是一组

后队列 ; 所有这些都是FIFO队列。前队列实现优先级,而后队列实现礼貌。在通过前后队列添加到前沿的URL流中,优先级首先为URL分配1和1之间的整数优先级。

基于其获取历史记录(考虑此URL的网页在之前的爬网之间发生变化的速率)。例如,已经表现出频繁变化的文档将被赋予更高的优先级。其他启发式方法可能依赖于应用程序和显式 - 例如,新闻服务中的URL可能始终被赋予最高优先级。现在已经为其分配了优先级,URL现在被附加到前队列中。

每个后向队列都维护以下不变量:(i)在爬网过程中它是非空的,(ii)它只包含来自单个主机的URL 。辅助表用于维护从主机到后台队列的映射。每当后队列为空并且正从前队列重新填充时,必须相应地更新表。

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 0 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子