网页爬虫抓取百度图片( 爬虫通用爬虫技术框架爬虫系统的诞生蜘蛛爬虫系统)
优采云 发布时间: 2022-02-25 19:13网页爬虫抓取百度图片(
爬虫通用爬虫技术框架爬虫系统的诞生蜘蛛爬虫系统)
干货全流程| 入门级爬虫技术原理,这就够了
爬虫系统的诞生
蜘蛛爬虫
一般搜索引擎的处理对象是互联网页面。目前,互联网页面数量已达100亿。因此,搜索引擎面临的第一个问题就是:如何设计一个高效的下载系统,将如此海量的网页数据传输到本地。互联网网页的镜像备份在本地形成。
网络爬虫可以发挥这样的作用,完成这项艰巨的任务。它是搜索引擎系统中一个非常关键和基本的组件。本文主要介绍网络爬虫相关的技术。虽然爬虫经过几十年的发展,在整体框架上已经比较成熟,但随着互联网的不断发展,它们也面临着一些新的挑战。
通用爬虫技术框架
爬虫系统首先从互联网页面中精心挑选一些网页,将这些网页的链接地址作为*敏*感*词*URL,将这些*敏*感*词*放入待爬取的URL队列中。爬虫依次读取要爬取的URL,通过DNS Parse传递URL,将链接地址转换为网站服务器对应的IP地址。然后把它和网页的相对路径名交给网页下载器,网页下载器负责下载网页。对于下载到本地的网页,一方面是存储在页库中,等待索引等后续处理;另一方面,将下载网页的URL放入爬取队列,记录爬虫系统已经下载的网页URL,避免系统重复爬取。对于刚刚下载的网页,提取其中收录的所有链接信息,并在下载的URL队列中进行检查。如果发现该链接没有被爬取,则将其放在待爬取的URL队列的末尾。该 URL 对应的网页将在爬取计划中下载。这样就形成了一个循环,直到待爬取的URL队列为空,这意味着爬虫系统已经对所有可以爬取的网页进行了爬取,此时完成了一个完整的爬取过程。该 URL 对应的网页将在爬取计划中下载。这样就形成了一个循环,直到待爬取的URL队列为空,这意味着爬虫系统已经对所有可以爬取的网页进行了爬取,此时完成了一个完整的爬取过程。该 URL 对应的网页将在爬取计划中下载。这样就形成了一个循环,直到待爬取的URL队列为空,这意味着爬虫系统已经对所有可以爬取的网页进行了爬取,此时完成了一个完整的爬取过程。
常见爬虫架构
以上是一般爬虫的整体流程。从宏观上看,动态爬取过程中的爬虫与互联网上所有网页的关系可以概括为以下五个部分:
下载网页的绑定:爬虫从互联网上下载到本地索引的网页的集合。
过期网页组合:由于网页数量较多,爬虫完成一轮完整的爬取需要较长时间。在爬取过程中,很多下载的网页可能已经更新,导致过期。原因是互联网上的网页处于不断动态变化的过程中,很容易产生本地网页内容与真实互联网的不一致。
待下载网页集合:URL队列中待爬取的网页,这些网页即将被爬虫下载。
已知网页集合:这些网页没有被爬虫下载,也没有出现在待爬取的URL队列中。通过已经爬取的网页或者待爬取的URL队列中的网页,总是可以通过链接关系找到它们。稍后会被爬虫抓取和索引。
未知网页的集合:一些网页无法被爬虫抓取,这些网页构成了未知网页的组合。实际上,这部分页面占比很高。
互联网页面划分
从理解爬虫的角度来看,以上对互联网页面的划分有助于深入理解搜索引擎爬虫面临的主要任务和挑战。绝大多数爬虫系统都遵循上述流程,但并非所有爬虫系统都如此一致。根据具体的应用,爬虫系统在很多方面都有所不同。一般来说,爬虫系统可以分为以下三种。
批处理式爬虫:批处理式爬虫的抓取范围和目标比较明确。当爬虫达到这个设定的目标时,它会停止爬取过程。至于具体的目标,可能不一样,可能是设置爬取一定数量的网页,也可能是设置爬取时间等等,都不一样。
增量爬虫:与批量爬虫不同,增量爬虫会不断地爬取。抓取到的网页要定期更新,因为互联网网页在不断变化,新网页、网页被删除或网页内容发生变化是常有的事,增量爬虫需要及时反映这种变化,所以在不断的爬取过程,他们要么是在爬取新的网页,要么是在更新现有的网页。常见的商业搜索引擎爬虫基本属于这一类。
垂直爬虫:垂直爬虫专注于属于特定行业的特定主题或网页。比如健康网站,你只需要从互联网页面中找到健康相关的页面内容,其他行业的内容是没有的。考虑范围。垂直爬虫最大的特点和难点之一是如何识别网页内容是否属于指定行业或主题。从节省系统资源的角度来看,下载后不可能屏蔽所有的互联网页面,这样会造成资源的过度浪费。爬虫往往需要在爬取阶段动态识别某个URL是否与主题相关,尽量不使用。爬取不相关的页面以达到节省资源的目的。垂直搜索网站或垂直行业网站往往需要这种爬虫。
好的爬行动物的特征
一个优秀爬虫的特性可能针对不同的应用有不同的实现方式,但是一个实用的爬虫应该具备以下特性。
01高性能
互联网上的网页数量非常庞大。因此,爬虫的性能非常重要。这里的性能主要是指爬虫下载网页的爬取速度。常用的评价方法是用爬虫每秒可以下载的网页数量作为性能指标。单位时间内可以下载的网页越多,爬虫的性能就越高。
为了提高爬虫的性能,设计时程序访问磁盘的操作方式和具体实现时数据结构的选择至关重要。例如,对于待爬取的URL队列和已爬取的URL队列,由于URL的数量非常多,不同实现方式的性能非常重要。性能差异很大,所以高效的数据结构对爬虫性能影响很大。
02 可扩展性
即使单个爬虫的性能很高,将所有网页下载到本地仍然需要很长时间。为了尽可能地缩短爬取周期,爬虫系统应该具有良好的可扩展性,即很容易增加 Crawl 的服务器和爬虫的数量来实现这一点。
目前实用的大型网络爬虫必须以分布式方式运行,即多台服务器专门进行爬虫,每台服务器部署多个爬虫,每个爬虫多线程运行,以多种方式增加并发。对于大型搜索引擎服务商来说,数据中心也可能会部署在全球、不同区域,爬虫也被分配到不同的数据中心,这对于提升爬虫系统的整体性能非常有帮助。
03 鲁棒性
当爬虫想要访问各种类型的网站服务器时,可能会遇到很多异常情况,比如网页的HTML编码不规则,被爬取的服务器突然崩溃,甚至出现爬虫陷阱。爬虫能够正确处理各种异常情况是非常重要的,否则它可能会时不时停止工作,这是难以忍受的。
从另一个角度来说,假设爬虫程序在爬取过程中死掉了,或者爬虫所在的服务器宕机了,一个健壮的爬虫应该可以做到。当爬虫再次启动时,它可以恢复之前爬取的内容和数据结构。不必每次都从头开始做所有的工作,这也是爬虫健壮性的体现。
04友善
爬虫的友好性有两层含义:一是保护网站的部分隐私,二是减少被爬取的网站的网络负载。爬虫爬取的对象是各种类型的网站。对于网站的拥有者来说,有些内容不想被所有人搜索到,所以需要设置一个协议来告知爬虫哪些内容不是。允许爬行。目前,实现这一目标的主流方法有两种:爬虫禁止协议和网页禁止标记。
爬虫禁止协议是指网站的拥有者生成的指定文件robot.txt,放在网站服务器的根目录下。该文件表示网站中哪些目录下面的网页不允许被爬虫爬取。在爬取网站的网页之前,友好的爬虫必须先读取robot.txt文件,并且不会下载被禁止爬取的网页。
网页禁止标签一般在网页的HTML代码中通过添加metaimage-package">
索引网页与互联网网页
爬取的本地网页很可能发生了变化,或者被删除,或者内容发生了变化,因为爬虫完成一轮爬取需要很长时间,所以部分爬取的网页肯定是过期的。因此,网页库中的过期数据越少,网页的新鲜度就越好,对提升用户体验大有裨益。如果新颖性不好,搜索结果全是过时数据,或者网页被删除,用户的内心感受可想而知。
尽管 Internet 上有很多网页,但每个网页都有很大的不同。例如,腾讯和网易新闻的网页与作弊网页一样重要。如果搜索引擎抓取的网页大部分都是比较重要的网页,就可以说明他们在抓取网页的重要性方面做得很好。你在这方面做得越好,搜索引擎就会越准确。
通过以上三个标准的分析,爬虫开发的目标可以简单描述为:在资源有限的情况下,由于搜索引擎只能爬取互联网上现有网页的一部分,所以更重要的部分应尽可能选择。要索引的页面;对于已经爬取的页面,尽快更新内容,使被索引页面的内容与互联网上对应页面的内容同步更新;网页。三个“尽可能”基本明确了爬虫系统提升用户体验的目标。
为了满足这三个质量标准,大型商业搜索引擎开发了多套针对性强的爬虫系统。以谷歌为例,至少有两种不同的爬虫系统,一种叫做Fresh Bot,主要考虑网页的新鲜度。对于内容更新频繁的网页,目前更新周期可以达到秒级;另一组称为 Deep Crawl Bot,主要针对更新不频繁、更新周期为几天的网页抓取。此外,谷歌在开发暗网爬虫系统方面也投入了大量精力。以后有时间讲解暗网系统。
谷歌的两个爬虫系统
如果你对爬虫感兴趣,还可以阅读:
干货全流程| 解密爬虫爬取更新网页的策略方法
网络爬虫 | 你不知道的暗网是怎么爬的?
网络爬虫 | 你知道分布式爬虫是如何工作的吗?