网络爬虫原理
爬虫的工作原理包括抓取,策略和存储,抓取是爬虫的基本劳动过程,策略是爬虫的智慧中枢,存储是爬虫的劳动结果。
1:从种子站点开始抓取
基于万维网的蝴蝶型结构,这种非线性的网页组织结构,就会出现一个抓取顺序的问题,这种抓取顺序的策略必须保证尽可能地抓取所有网页。
一般来说,爬虫选择抓取蝴蝶型左边的结构为抓取出发点,典型的如sina和sohu这样的门户网站的主页,每次抓取网页之后分析其中的URL,这种字符串形式的链接是指向其他网页的URL,它们指引着爬虫抓取其他网页。(基于这点我们可以初步理解引擎先左后右,先上后下的抓取原因了)
a:深度优先的策略(Depth-First Traversal)
深度优先的遍历策略类似家族继承策略,典型的如封建帝王的继承,通常为长子,如果长子去世,长孙的优先级大于次子的优先级(这点大家多多仔细分析琢磨下),如果长子和长孙都已经去世,那么次子继承,这种继承上的优先关系也称深度优先策略。(从这点上我们可以了解到蜘蛛的抓取栏目页先后顺序)
b:宽度优先的策略(Breadth-First Traversal)
宽度优先我们又称为广度优先,或者叫层次优先,例如:我们在给祖辈和父辈还有平
辈敬茶的时候先给最年长的祖辈,其次为父辈,最后为平辈,在爬虫抓取上也采取了这样的策略。基于使用宽度有限的策略主要原因有三点:
1)首页重要的网页往往离种子比较近,例如我们打开新闻站的时候往往是最热门的新闻,随着不断的深入冲浪,PV值增加,所看到网页重要性越来越低。
2)万维网的实际深度最多能达到17层,到达某个网页的路径深入很多,但是总存在一条很短的路径。
3)宽度优先有利于多爬虫的合作抓取,多爬虫合作通常先抓取站内连接,遇到站外连接然后开始抓取,抓取的封闭性很强。
2:网页抓取优先策略
网页的抓取优先策略也称为“面页选择问题”(page selection),通常抓取重要性的网页,这样保证有限资源(爬虫,服务器负载)尽可能的照顾到重要性高的网页,这点应该很好理解。
那么哪些网页才是重要性的网页呢?
网页的重要性判断因素很多,主要有链接欢迎度(知道链接的重要性了吧),链接的重要度和平均深度链接,网站质量,历史权重等主要因素。
聚焦爬虫工作原理及关键技术概述
网络爬虫是一个自动提取网页的程序,它为搜索引擎从Internet网上下载网页,是搜
索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止,另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。
相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:
(1) 对抓取目标的描述或定义;
(2) 对网页或数据的分析与过滤;
(3) 对URL的搜索策略。
3 网页搜索策略
网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。深度优先在很多情况下会导致爬虫的陷入(trapped)问题,目前常见的是广度优先和最佳优先方法。
3.1 广度优先搜索策略
3.2 最佳优先搜索策略
微博信息获取可以采取两种方式:
第一种是模拟爬虫程序,模拟请求登录微博平台后获取微博各种信息
优点是没有请求的限制,缺点是获得网页信息后需要分析出哪一些才是想要的信息,而且对于网页上的一些需要进行AJAX(异步JavaScript和XML)交互才能获得的信息,模拟起来难度很大。
第二种是通过微博开发平台的API接口来获取微博各种信息。
优点是从平台API返回的数据都是已经格式化好的数据,不需要在内容抓取上花费额外的成本,缺点是各个平台对于API在单位时间内的请求数量有所限制。
因篇幅问题不能全部显示,请点此查看更多更全内容