在上文中,笔者介绍了互联网的发展、搜索引擎的发展,从目录搜索引擎讲到搜索引擎。本章节,我们来继续聊一聊搜索产品背后的技术。

因为我本身并不从事技术岗位,本篇文章的读者,我也默认是与我一样,不从事技术岗位,但对技术有一定感知的同学,我将尽力将文章写得简单、易懂。

索引引擎系统由多个子模块组成,先来了解第一个模块,网络爬虫。

一、网络爬虫是什么?

用一个程序自动地将所有的网页下载到本地,在本地形成互联网的镜像备份。

二、通用爬虫框架

了解通用爬虫框架之前,让我们再次回顾上个章节讲过的超链接(hyperlinks)。

浏览网页时,点击超链接,浏览器就可跳转到相应的网页。有了超链接,我们可以从任何一个网页出发,用图的遍历算法,自动地访问每一个网页并把他们存起来。

(图的遍历算法,在这里不做解释,有兴趣的同学,可以自己查询)

上述说法较为抽象,让我们通过一个实例来了解。

网络爬虫如何下载整个互联网呢?

参考上图,从一家门户网站的首页开始。我们任意选择一家门户网站的首页,将其内容下载下来,并对内容进行分析,于是,我们能获取门户网站首页的所有超链接。接着,我们分别进入不同的超链接,比如,进入超链接一,重复对该网站进行内容下载。

当然,也需要记载哪个网页被下载过了,避免重复。

三、网络爬虫的特性

实用的爬虫系统应该具备如下几种特性:

3.1 高性能

互联网网页浩如烟海,因此爬虫的性能至关重要。性能定义为爬虫下载网页的速度,具体评价指标为爬虫每秒能下载的网页数量。单位时间能够下载网页数量越多,性能越高。

3.2 可扩展性

因为互联网网页数量巨大,即使单个爬虫性能很高,要完成爬虫任务,所耗费的时间也是极长。为了尽可能缩短抓取周期,爬虫系统应该有很好的可扩展性,可以通过增加爬虫数量来达到此目的。

3.3 健壮性

爬虫要访问各种类型的网站服务器,可能会遇到很多种非正常情况,比如网页HTML编码不规范,被抓取服务器突然死机。爬虫对各种异常情况能够正确处理非常重要,否则可能会不定期停止工作。

3.4 友好性

爬虫的友好性包含两方面的含义:

1. 保护网站的部分私密性

2. 减少被抓取网站的网络负载

四、爬虫质量的评价标准

从用户体验角度,我们需要对爬虫质量进行衡量,有以下3个指标:

1. 抓取网页覆盖率

2. 抓取网页时新性

3. 抓取网页重要性

4.1 覆盖率

覆盖率 = 爬虫抓取的网页数量 / 互联网所有网页数量的比例

覆盖率高,等价于搜索引擎的召回率越高。

上图中,互联网有5个网页,爬虫系统抓取了其中3个,因此召回率 = 3 / 5 = 60%

4.2 时效性

对很多抓到本地的网页来说,很多网页可能已经发生变化,或者被删除,爬虫完整抓取一轮需要较长的时间周期,所以抓取到的网页中必有一部分是过期的数据,即不能在网页变化后第一时间反映到网页库中,所以网页库中过期的数据越少,则网页的时效性越好,这对用户体验的作用非常重要。

4.3 重要性

互联网网页众多,但是每个网页重要性差异很大,比如来自雅虎新闻的网页和某个作弊网页相比,重要性有很大差异。如果搜索引擎爬虫抓回来的网页大都是比较重要的网页,则其在抓取网页重要性方面做得很好。

本章介绍了,搜索引擎的第一步,网络爬虫,分别从网络爬虫系统,网络爬虫的性能,以及网络爬虫的评价指标三大模块,对网络爬虫进行了讲解。

下一章,我们讲搜索引擎索引。

参考

  1. 数学之美
  2. 智能时代
  3. 这就是搜索引擎核心技术详解

本文由 @一颗西兰花 原创发布于人人都是产品经理。未经许可,禁止转载

题图来自Unsplash,基于CC0协议

2个网页跳来跳去_成为搜索产品经理(2):认识网络爬虫相关推荐

  1. java怎么写网络爬虫_教你如何编写简单的网络爬虫

    一.网络爬虫的基本知识 网络爬虫通过遍历互联网络,把网络中的相关网页全部抓取过来,这体现了爬的概念.爬虫如何遍历网络呢,互联网可以看做是一张大图,每个页面看做其中的一个节点,页面的连接看做是有向边.图 ...

  2. 学python还是学产品经理_转型AI产品经理,原来不需要学那么深的算法和数学模型...

    本文作者是从互联网产品经理转型成了AI工程师,其文章特点是能通过简单有趣的文字介绍AI技术概念.本文是他的第一篇文章,以飨大家. Hello,World! 这是我的第一篇文章,如果你还没系统地学习过A ...

  3. scrapy 中爬取时被重定向_一篇文章教会你理解Scrapy网络爬虫框架的工作原理和数据采集过程...

    今天小编给大家详细的讲解一下Scrapy爬虫框架,希望对大家的学习有帮助. 1.Scrapy爬虫框架 Scrapy是一个使用Python编程语言编写的爬虫框架,任何人都可以根据自己的需求进行修改,并且 ...

  4. 系统检测到您疑似使用网页抓取工具访问本_12款最常使用的网络爬虫工具推荐...

    网络爬虫在当今的许多领域得到广泛应用.它的作用是从任何网站获取特定的或更新的数据并存储下来.网络爬虫工具越来越为人所熟知,因为网络爬虫简化并自动化了整个爬取过程,使每个人都可以轻松访问网站数据资源.使 ...

  5. python网络爬虫网易云音乐_一篇文章带你用Python网络爬虫实现网易云音乐歌词抓取...

    标签下,如下图所示: 接下来我们利用美丽的汤来获取目标信息,直接上代码,如下图: 此处要注意获取ID的时候需要对link进行切片处理,得到的数字便是歌曲的ID:另外,歌曲名是通过get_text()方 ...

  6. python数据采集有哪些技术_如何快速掌握Python数据采集与网络爬虫技术

    一.数据采集与网络爬虫技术简介 网络爬虫是用于数据采集的一门技术,可以帮助我们自动地进行信息的获取与筛选.从技术手段来说,网络爬虫有多种实现方案,如PHP.Java.Python ....那么用pyt ...

  7. python下载电影天堂视频_一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接...

    点击上方"IT共享之家",进行关注 回复"资料"可获赠Python学习福利 [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的 ...

  8. python下载电影天堂视频教程_一篇文章教会你利用Python网络爬虫获取电影天堂视频下载链接|python基础教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ [一.项目背景] 相信大家都有一种头疼的体验,要下载电影特别费劲,对吧?要一部一部的下载,而且不能直观的知 ...

  9. 京东运营插件_技术中台产品经理必知的那些易混词儿(1):组件、套件、 中间件、插件……...

    编辑导语:在产品经理做技术中台时,有很多需要知道的专有名词概念:比如:组件.套件.中间件.插件等等,本文作者对此进行了解释和梳理,便于产品经理可以快速理解技术中台产品的逻辑和思维,我们一起来看一下. ...

最新文章

  1. Warning: Permanently added the RSA host key for IP address '192.30.253.113' to the list of known hos
  2. 如何使linux中java支持中文
  3. [转] 以 async/await 为例,说明 babel 插件怎么搭
  4. centos下crontab的使用
  5. MyBatis-Plus_简介
  6. Centos6.5 邮件服务
  7. 收下这10个终身学习的资源号,Max你的工作效率
  8. 基于HLS流媒体协议视频加密的解决方案
  9. java学习资料免费下载(持续更新ing)
  10. 今日头条定位融资商业计划书
  11. 2021年的10种突破性技术
  12. aamp;m大学计算机科学,名校介绍丨美国 德克萨斯AM大学 Texas AM University
  13. 1987:【20CSPS提高组】括号树P5658 [CSP-S2019] 括号树
  14. Python爬虫:(亲测,已解决!)解决在使用谷歌浏览器的开发者工具时,没有Referer防盗链缺失问题。
  15. ecshop ajax无刷新登陆
  16. 计算机网络常见面试题(自答版)
  17. 逆向笔记 | 破解极域学生端密码并实现窗口化屏幕广播
  18. android输入法中文在哪里设置,android输入法怎么设置中文
  19. Atari 2600 新书:主机游戏的一次黎明冒险
  20. 英雄联盟拳头公司个人开发API如何注册获取 - Web-scraping爬虫

热门文章

  1. LVS+DR源码安装
  2. 测试女生周期的软件名字,什么软件可以提醒生理期?适合女生可用的便签软件...
  3. linux分区合并不损坏系统,更改磁盘分区后修复GRUB启动
  4. 史上最全的SpringBatch学习教程
  5. linux shell只读变量、删除变量
  6. 解决vmware移动虚拟机之后执行ifconfig命令无输出的问题
  7. 【收藏】K8S部署minio对象存储
  8. java发展过程中的重大事件
  9. git简明教程:基本操作命令
  10. kafka topic常用命令