这就是搜索引擎--读书笔记三

前言

考虑到上次的网络爬虫总结一文对基础的知识还没有介绍完整,所以今天花一点时间来补充上次的网络爬虫基础知识。这次给大家总结了两个方面的内容:暗网抓取和分布式爬虫。希望对阅读本文的博友们有所收获。

暗网抓取

物理学研究表明,在目前宇宙所有物质的总体质量中,星系等可见物质占其中的20%,不可探测的暗物质占据了总质量的80%。互联网中暗网可以与宇宙的暗物质相类比,而其所占网页的比例,更是远大于暗物质占宇宙质量的比例,大约百倍于目前的明网网页。

什么是暗网

所谓暗网,是指目前搜索引擎爬虫按照常规方式很难抓取到的互联网页面。如前所述,搜索引擎爬虫依赖页面中的链接关系发现新的页面,但是很多网站的内容是以数据库方式存储的,典型的例子是一些垂直领域网站,比如携程旅行网的机票数据,很难有显式链接指向数据库内的记录。所以 ,常规的爬虫无法索引这些数据内容,这是暗网的命名由来。

为了能够对暗网数据进行索引,需要研发与常规爬虫机制不同的系统,这类爬虫被称为暗网爬虫。暗网爬虫的目的是将暗网数据从数据库中挖掘出来,并将其加入搜索引擎的索引,这样用户在搜索时便可利用这些数据,增加信息覆盖程度。

目前大型搜索引擎服务提供商都将暗网挖掘作为重要研究方向,因为这直接关系到索引量的大小。在此领域的技术差异,将直接体现在搜索结果的全面性上,自然是竞争对手之间的必争之地。Google目前将其作为重点研发方向,而百度的“阿拉丁计划”目的也在于此。

垂直网站提供的搜索界面,往往需要人工选择或者填写内容,比如机票搜索需要选择出发地、到达地和日期,图书搜索需要支出书名或者作者。而暗网爬虫为了能够挖掘数据库的记录,必须模拟人的行为,填写内容并提交表单。对于暗网爬虫来说,其技术挑战有两点:一是查询组合太多,如果一一组合遍历,那么会给被访问网站造成太大压力,所以如何精心组合查询选项是个难点;第二点就是有的查询是文本框,比如图书搜索中需要输入书名,爬虫怎么样才能够填入合适的内容呢?

查询组合问题

对于暗网爬虫来说,刚才就说到不能简单暴力的查询,那么Google对此就提出了一种方案,称之为富含信息查询模板。那么我们首先解释查询模板。比如如我之类的大学生去智联招聘、前程无忧之类的找工作的网站寻找实习职位时,由于不愿意查看和自己不匹配的职位,这时我们需要用到职位搜索这一栏,完整的查询一般由3个不同的属性组成:职位类别、行业类别和工作地点。如果在向搜索引擎提交查询的时候,部分属性被赋予了值,而其他属性不赋值,则这几个赋值的属性一起构成了一个查询模板。

那么什么又是富含信息查询模板呢?对于某个固定的查询模板来说,如果给模板内每个属性都赋值,形成不同的查询组合,提交给垂直搜索引擎,观察所有返回页面的内容,如果相互之间内容差异较大,说明这个查询模板就是富含信息查询模板。

文本框填写问题

在爬虫运转起来之前,因为对目标网站一无所知,所以必须人工提供一些提示。通过人工观察网站进行定位,提供一个与网站内容相关的初始种子查询关键词表。爬虫根据初始种子词表,向垂直搜索引擎提交查询,并下载返回的结果页面。之后从返回结果页面里自动挖掘出相关的关键词,并形成一个新的查询列表,依次将新挖掘出的查询提交给搜索引擎。如此往复,直到无法下载到新的内容为止。

分布式爬虫

对于商业搜索引擎来说,面对海量待抓取网页,分布式爬虫架构是必须采用的技术。只有采取分布式架构,才有可能在较短时间内完成一轮抓取工作。常见的分布式架构有两种:主从式分布爬虫和对等式分布爬虫。

主从式分布爬虫:不同的服务器承担不同的角色分工,其中有一台专门负责对其他服务器提供URL分发服务,其他机器则进行实际的网页下载。URL服务器维护待抓取URL队列,并从中获得待抓取网页的URL,分配给不同的抓取服务器,另外还要对抓取服务器之间的功过进行负载均衡,使得各个服务器承担的工作量大致相等,不至于出现忙的过忙、闲的过闲的情形。抓取服务器之间没有通信联系,每个抓取服务器只和URL服务器进行消息传递。

对等式分布爬虫:服务器之间不存在分工差异,每台服务器承担相同的功能,各自负担一部分URL的抓取工作。

这种架构由于没有URL服务器存在,所以每台抓取服务器自己来判断某个URL是否应该由自己抓取,或者将这个URL传递给相应的服务器。至于判断方法,可以对网址的主域名进行哈希计算,之后去模,如果计算所得的值和抓取服务器编号匹配,则自己下载该网页,否则将该网址转发给对应编号的抓取服务器。

后话

网络爬虫确实有非常多的基础知识和实战技术,目前的我掌握的技能是非常的少,接下来肯定会努力学习爬虫实战技术的,往后也会向大家分享我学习的东西。不过,在搜索引擎这一part,索引对搜索是非常重要的,面对海量的网页内容,如何快速的找到包含用户查询关键词的网页,是一直都需要解决并优化的技术。所以接下来,我会在搜索引擎一系列总结中给大家讲解倒排索引这一方法。

时间: 2024-11-05 05:03:34

这就是搜索引擎--读书笔记三的相关文章

这就是搜索引擎--读书笔记一

这就是搜索引擎 -- 读书笔记一 相信搜索引擎对于每一个爱好算法甚至爱好技术的IT人员都具有强烈的好奇心吧,因为搜索引擎在互联网中的地位实在是不可撼动.想象如果互联网没有了搜索引擎,那么我们平常技术上出现瓶颈了怎么办?甚至连普通的生活都离不开搜索,大学生的你订餐了吗? 搜索引擎已经发展为每个人上网都离不开的重要工具,其技术发展历程是怎样的呢?其基本目标是什么?核心技术问题又是什么呢?在接下来的一系列博文中,我会根据读书和自己的总结用平乏的语言来表达出来,希望对朋友们有所帮助.另外,博友们如果有好

这就是搜索引擎--读书笔记二

网络爬虫基础 前言 通用搜索引擎的处理对象就是互联网网页,目前网页数量以百亿计,所以搜索引擎首先面临的问题就是:如何能够设计出高效的下载系统,以将如此海量的网页数据传送到本地,在本地形成互联网网页的镜像备份. 网络爬虫即起此作用,它是搜索引擎系统中很关键也很基础的构建.本次总结以及接下来的几次总结主要给大家简单介绍一下与网络爬虫相关的技术.说到爬虫,又想到了Python,所以首先了解一下爬虫的简单机制,这样对学习Python爬虫会有很大的帮助. 通用爬虫框架 如图所示 这是一个通用的爬虫框架流程

这就是搜索引擎--读书笔记四--索引基础

搜索引擎索引基础 前几天我阅读了搜索引擎索引这一章,发现倒排索引这一方法确实很巧妙和迷人,它包含的原理和设计方法很独到.所以接下来,我想把我学习到的索引方面的知识给大家讲解一下,总共分为三篇:索引基础.索引建立和更新.索引查询. 我们首先认识倒排索引基本概念 文档:一般搜索引擎的处理对象是互联网网页,而文档这个概念要更宽泛些,代表以文本形式存在的存储对象,相比网页来说,涵盖了更多形式,比如Word.PDF.HTML.XML等不同格式的文件都可以称为文档. 文档集合:由若干文档构成的集合称为文档集

这就是搜索引擎--读书笔记八--检索模型与搜索排序

检索模型与搜索排序 前言 搜索结果排序是搜索引擎最核心的构成部分,很大程度上决定了搜索引擎的质量好坏以及用户接受与否.尽管搜索引擎在实际结果排序时融合了上百种排序因子,但最重要的两个因素还是用户查询和网页的内容相关性及网页链接情况.那么,我们得到用户搜索词之后,如何从内容相关性的角度上对网页进行排序输出呢? 判断网页内容是否与用户查询相关,这依赖于搜索引擎所采用的检索模型.搜索引擎的核心是判断哪些文档是和用户需求相关的,并按照相关程度排序输出,所以相关程度计算是将用户查询和文档进行匹配的过程,而

这就是搜索引擎--读书笔记七--倒排列表压缩算法

倒排列表压缩算法 目前有很多种倒排列表算法可以选择,但是我们对评判算法的优劣需要定量指标.一般会考虑3个指标:压缩率.压缩速度以及解压速度. 压缩率是指数据压缩前和压缩后大小的比例,显然,压缩率越高,就越节约磁盘空间.而压缩速度是压缩单位量的数据所花的时间,但是压缩往往是在建立索引过程中进行的,这是一个后台进行的过程,不需要及时响应用户查询,即使速度慢一些也没有关系.所以普遍来说,压缩速度不是一个重要指标. 那么我们来看看解压速度.顾名思义,解压就是将压缩数据恢复到原始数据.这是一个实时响应过程

这就是搜索引擎--读书笔记六--索引的查询

索引的查询处理 为搜索引擎构建索引,其目的是能更快速地提取与用户查询相关的文档信息,假设搜索引擎已经建立了索引,我们如何利用倒排索引来相应用户的查询呢?这一次的总结就是给大家分享一下搜索引擎对于用户查询的处理过程. 目前有两种常见的查询处理机制,一种称为一次一文档方式,另外一种称为一次一单词方式. 下面我们用一个具体例子来分别说明两种基本查询处理方式的运行机制.在这个例子里,假设用户输入的查询为“搜索引擎 技术”,而“搜索引擎”这个单词对应的倒排列表中,文档ID依次为{1,3,4},“技术”这个

这就是搜索引擎--读书笔记五--索引的建立与更新

索引的建立和更新 索引的建立 前一总结里说到,如果索引结构建立好了,可以提高搜索的速度,那么给定一个文档集合,索引是如何建立起来的呢?建立索引的方式有很多种,在这里我就书中提到的三种方法简单总结一下. 两遍文档遍历法 第一次文档遍历 第一次扫描文档集合时,并没有立即开始建立索引,而是收集一些的统计信息,比如文档集合包含的文档个数N.文档集合内包含的不同单词个数M以及每个单词在哪些文档中出现过的信息DF等等.将所有单词对应的DF值全部相加,就可以知道建立最终的索引需要多少内存了,然后在内存中将连续

悟道—位IT高管20年的职场心经(读书笔记三)

悟道--一位IT高管20年的职场心经 第三章 世事洞明皆学问 职场就是你的大半个世界 是你一辈子也读不完的一大本书 想明白一个道理, 看明白一件事儿, 你就向成功迈进了一步. 1.1  "四行"说 四行是指: 第一,  你自己得行.自己的基础的能力是必须的,得靠自己学习. 第二,  得有人说你行.需要有伯乐,实际上是你得有一个自己的圈子,并且这些人都人认同你. 第三,  说你行的人得行.自己周围的圈子,里面也必须有牛人,只有在牛人的范围内,才能突显你自己的才能. 第四,  你身子骨得行

《你必须知道的.NET》读书笔记三:体验OO之美

一.依赖也是哲学 (1)本质诠释:"不要调用我们,我们会调用你" (2)依赖和耦合: ①无依赖,无耦合: ②单向依赖,耦合度不高: ③双向依赖,耦合度较高: (3)设计的目标:高内聚,低耦合. ①低耦合:实现最简单的依赖关系,尽可能地减少类与类.模块与模块.层次与层次.系统与系统之间的联系: ②高内聚:一方面代表了职责的统一管理,一方面又代表了关系的有效隔离: (4)控制反转(IoC):代码的控制器交由系统控制而不是在代码内部,消除组件或模块间的直接依赖: (5)依赖注入(DI): ①