looking at 网络爬虫

网络爬虫初探

网络爬虫经过遍历网页的节点,把网页中的内容抓取下来。网络

网络的结构

将一个页面比做是一个节点,将URL看做是一个从原网页指向目标页面的有向边。所以一个url下的网络接口能够看作是从一个源节点出发,造成的有限或无限的有向图。爬虫就是负责遍历这些节点,将每一个节点中的网页内容保存到本地。url

简单深度优先遍历

深度优先就是优先遍历子页面,当当前页面没有子页面是才返回,遍历第二个子页面。通常须要维护一个栈,保存访问的路径。将栈顶页面的第一个未访问的子页面添加到栈中。当栈顶不存在未访问的子页面时,将它退栈,继续访问新栈顶页面未访问的子页面。
这种遍历方式容易形成爬虫在一条过长的路径上浪费过多的时间。排序

简单宽度优先搜索

爬虫优先遍历当前节点的全部子页面。这须要维护一个队列操做,首先抓取队列中全部url的页面内容,而后依次将队首的url中的子页面url添加到队尾,而后将此url出队,直到全部已访问的url所有出队。这种遍历方式的弊端显而易见,即抓取数据量随着层数的增长呈指数级别增长。接口

带偏好的宽度优先策略

与当前页面相关度大的链接每每与当前页面的距离越近,所以采用宽度优先能够更集中的得到有意义的页面。可是广告以及一些与页面无关的链接会白白增大抓取工做的工做量。所以我么须要为全部链接创建一种评估机制,优先抓取一些等级高的页面,将一些优先级低的页面放在后面抓取甚至是不抓取。队列

1. 大站优先策略
维护一个优先级队列,对队列中的全部url按照其所包含的子页面数量进行排序,数量高的放在前面。搜索

2. 反向连接数策略
优先遍历队列中指向它的连接数多的页面。这只又在拥有十分庞大的页面数据时才可使用(吧)遍历

3. 网页排名
为每一个网页赋予必定的重要性数值。当存在从A指向B的链接时,则将A的重要性分摊给B一部分。这样,外部连接多的页面,以及无关链接少的页面,得分会比较高。数据

相关文章
相关标签/搜索