第一章 认识网络爬虫

第一章 什么是网络爬虫
前言:
如何能够自动高效获取互联网中我们所感兴趣的内容就是需要爬虫技术所专研的。
而我们感兴趣的信息又分为不同类型:如果是做搜索引擎,那么感兴趣的信息就是高质
量网页;如果要获取某一领域的数据或者是明确的检索需求,那么感性趣的信息就是
根据我们的检索和需求定位相关信息,同时也需要过滤一些无用、干扰的信息。

1.1 初始网络爬虫
网络爬虫又称为网络蜘蛛、网络蚂蚁、网络机器等,可以自动化浏览网络中信息,而我们
爬取的信息需要按照我们制定的规则进行,这些规则我们称之为网络爬虫算法。

使用python能够便于编写爬虫程序,进行互联网信息自动化检索。

搜索引擎离不开爬虫,如百度搜素引擎爬虫成为百度蜘蛛。需要百度蜘蛛每天
在海量的互联网信息中进行爬取,爬取优质信息并收录,当用户在百度搜索引擎上检
索对应关键词时,百度将对关键词进行分析处理,从收录的网页中找出相关网页,
按照一定的排名规则进行排序并将结果展现给用户。

而对于这些优质网页的查找及网页排序及去重是通过百度蜘蛛爬虫算法实现的。从中
使用不同的算法所取得的结果是不一样的,如果将优质网页查找出来及网页排序去重做到
更加优质,就需要改进/更新算法。所以,我们有必要对爬虫算法要有所了解,并且也要有
自己创建算法的心理准备。

除了百度搜索引擎离不开爬虫以外,其他搜索引擎也离不开爬虫,它们也拥有自己
的爬虫。比如360的爬虫叫360Spider,搜狗的爬虫叫Sogouspider,必应的爬虫叫
Bingbot。
如果想自己实现一款小型的搜索引擎,我们也可以编写出自己的爬虫去实现,
当然,虽然可能在性能或者算法上比不上主流的搜索引擎,但是个性化的程
度会非常高,并且也有利于我们更深层次地理解搜索引擎内部的工作原理。

在先进的大数据时代是离不开爬虫的,比如在进行大数据分析或数据挖掘时,我们可以
去一些比较大型的官方站点下载数据资源,而如何能够从这些资源中获取高质量的
的数据源,这就是爬虫需要解决的;同时对于个人而言,由于信息越来越多,如何
精确获取自己感兴趣的信息,也是我们为自己准备的搜索引擎。



1.2 为什么要学习网络爬虫

1 学习爬虫,可以私人定制一个搜索引擎,并且可以对搜索引擎的数据采集的工作原
  理进行更深层次的理解。
  简单来说,我们学会了爬虫编写之后,就可以利用爬虫自动地采集互联网中的信息,
  采集回来后进行相应的存储或处理,在需要检索某些信息的时候,只需在采集回来
  的信息中进行检索,  即实现了私人的搜索引擎。当然,信息怎么爬取、怎么存储、
  怎么进行分词、怎么进行相关性计算等,都是需要我们进行设计的,爬虫技术主要
  解决信息爬取的问题。
 
2  大数据时代,要进行数据分析,首先要有数据源,而学习爬虫,可以让我们获取更多
   的数据源

3  对于很多SEO从业者来说,学习爬虫,可以更深层次地理解搜索引擎爬虫的工作原理,
   从而可以更好地进行搜索引擎优化

4)从就业的角度来说,爬虫工程师目前来说属于紧缺人才,并且薪资待遇普遍较高

你还有一些其他学习爬虫的原因,总之,不管是什么原因,理清自己学习的目的,
就可以更好地去研


1.3 网络爬虫的组成
网络爬虫由控制节点、爬虫节点和资源库构成。

                                                  图1-1所示是网络爬虫的控制节点和爬虫节点的结构关系


从中可以看到,每个控制节点中可以有一个或多个爬虫节点并且能够相互通信,控制节点之间可以
相互通信;属于同一个控制节点下的各爬虫节点也可以相互通信。

控制节点,也叫作爬虫的中央控制器,主要负责根据URL地址分配线程,并调用爬虫节点
进行具体的爬行。

爬虫节点会按照相关的算法,对网页进行具体的爬行,主要包括下载网页以及对网页
的文本进行处理,爬行后,会将对应的爬行结果存储到对应的资源库中。

1.4 爬虫类型:

网络爬虫按照实现的技术和结构可以分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫
、深层网络爬虫等类型。
1.4.1 通用网络爬虫
通用网络爬虫(General Purpose Web Crawler)也成为全网爬虫,从中可知其目标
资源在全互联网中。从中可以预测通过用网络爬虫所获的的目标数据是巨大的,爬行
范围也是非常大的,那么能够支撑起这类爬虫的,其相关硬件与软件的性能要求也是非常高的,
这类爬虫主要应用在大型搜索引擎中。

通用网络爬虫主要由URL集合、URL队列、页面爬行模块、页面分析模块、页面数据
库、链接过滤模块等构成。通用网络爬虫在爬行的时候会采取一定的爬行策略,
主要有深度优先爬行策略和广度优先爬行策略。

1.4.2 聚焦网络爬虫
聚焦网络爬虫(Focunsed Crawler)也叫做主题网络爬虫。聚焦网络爬虫是按照预先定义
的主题有目的的进行网络爬取的一种爬虫,聚焦网络爬虫不同于网络爬虫一样将目标资源
定位在全互联网中,而是将爬取目标定位在与主题相关的页面中,此时,可以大大节省爬
虫所需爬取所需的宽带资源和服务器资源。聚焦网络爬虫主要应用在对特定信息的爬取中
,主要为某一类特定的人群提供服务。

聚焦网络爬虫主要由初始URL集合、URL队列、页面爬行模块、页面分析模块、页面数据库、
链接过滤模块、内容评价模块、链接评价模块等构成。内容评价模块可以评价内容的重要性,
同理,链接评价模块也可以评价出链接的重要性,然后根据链接和内容的重要性,可以确定
哪些页面优先访问。聚焦网络爬虫的爬行策略主要有4种,即基于内容评价的爬行策略、
基于链接评价的爬行策略、基于增强学习的爬行策略和基于语境图的爬行策略。

1.4.3 增量式网络爬虫
增量式网络爬虫(Incremental Web Crawler),所谓增量式,对应着增量式更新。增量式更新
指的是在更新的时候只更新改变的地方,而未改变的地方则不更新。所以,增量式网络爬虫
就是只爬取发生变化的网页或者是新网页,对于未发生内容改变的网页则不需爬取,从而保证了
所爬取到的页面尽可能是新页面。

1.4.4 深层网络怕从
深层网络爬虫(Deep Web Crawler),可以爬取互联网中深层页面。在互联网中网页按存在
方式分类,可分为表层页面和深层页面。所谓的表层页面,指的是不需要提交表单,使用静
态的链接就能够到达的静态页面;而深层页面则隐藏在表单后面,不能通过静态链接直接获
取,是需要提交一定的关键词之后才能够获取得到的页面。在互联网中,深层页面的数量往
往比表层页面的数量要多很多,故而,我们需要想办法爬取深层页面。

爬取深层页面,需要想办法自动填写好对应表单,所以,深层网络爬虫最重要的部分即为表
单填写部分。

深层网络爬虫主要由URL列表、LVS列表(LVS指的是标签/数值集合,即填充表单的数据源)、
爬行控制器、解析器、LVS控制器、表单分析器、表单处理器、响应分析器等部分构成。

深层网络爬虫表单的填写有两种类型:第一种是基于领域知识的表单填写,简单来说就是
建立一个填写表单的关键词库,在需要填写的时候,根据语义分析选择对应的关键词进行
填写;第二种是基于网页结构分析的表单填写,简单来说,这种填写方式一般是领域知识
有限的情况下使用,这种方式会根据网页结构进行分析,并自动地进行表单填写。

1.5 聚焦爬虫
图1-2所示为聚焦爬虫运行的流程,熟悉该流程后,我们可以更清晰地知道聚焦爬虫的工作
原理和过程。


首先,聚焦爬虫拥有一个控制中心,该控制中心负责对整个爬虫系统进行管理和监控,主要
包括控制用户交互、初始化爬行器、确定主题、协调各模块间的工作、控制爬行过程等。

然后,控制中心将初始的URL集合传递给URL队列,页面爬行模块会从URL队列中读取第一批URL
列表,然后根据这些URL地址从互联网中进行相应的页面爬取。爬取后,将爬取到的内容传到
页面数据库中存储,同时,在爬行过程中,会爬取到一些新的URL,此时,需要我们根据所定的
主题使用链接过滤模块来过滤无用的URL(链接),在将剩下的URL链接根据主题使用链接评价
模块或内容评价模块进行优先级的排序。完成后,将新的URL地址传递到URL队列中,供页面爬
行模块使用。另一方面,将页面爬取并存放到页面数据库后,需要根据主题使用页面分析模块
对爬取到的页面进行页面分析处理,并根据处理结果建立索引数据库,用户检索对应信息时,
可以从索引数据库中进行相应的检索,并得到对应的结果。

这就是聚焦爬虫的主要工作流程,了解聚焦爬虫的主要工作流程有助于我们编写聚焦爬虫,使
编写的思路更加清晰。

原文地址:https://www.cnblogs.com/papapython/p/7456633.html