精通Python网络爬虫-一二三章基础

科创要用到深层网络爬虫所以系统学一次python爬虫,另外一个项目采用spring boot当后端,果然面向需求编程才是王道,这本书叫精通python网络爬虫,不求精通,好歹入个门吧(还有个原因前几天拿爬虫试了试水,确实天下武功,唯快不破,脚本的速度真的可以为所欲为)

一、爬虫介绍

1.1、为何学习网络爬虫

(1)定制一个个性化的搜索引擎 搜索引擎离不开爬虫,例:百度(百度蜘蛛BaiduSpider)360(360Spider) 搜狗(SougouSpider)必应(BingBot)
(2)数据分析
(3)优化搜索引擎
(4)工作生计
(5)兴趣爱好

1.2、网络爬虫的组成

网络爬虫由控制节点,爬虫节点,资源库构成。

控制节点:爬虫的中央控制器,根据URL地址分配线程,调用爬虫节点具体爬行。
爬虫节点:应用相关算法,对网页进行具体爬行。
资源库:将爬虫节点爬行结果存储到对应的资源库中。

1.3、爬虫的分类

爬虫类型 具体说明
通用网络爬虫 爬行目标数据巨大,范围广
聚集网络爬虫 目标网页是定位与主题相关网页
增量式网络爬虫 只爬取内容发生变化的网页
深层网络爬虫 爬取深层页面
注明:在互联网中,网页按存在方式分类,分为表层页面和深层页面。
(1)表层页面,不需要提交表单,使用静态链接到达的静态页面。
(2)深层页面,需提交表单,才能获取的页面。
(3)深层网络爬虫最重要的部分是填写表单,以爬取深层页面。

二、搜索引擎核心

爬虫与搜索引擎密不可分。
下图所示搜索引擎的核心工作流程。

(1)搜索引擎利用爬虫模块(控制器,爬行器)从互联网爬取相应网页存储至原始数据库中。

(2)对原始数据库中数据进行索引(相当于索引器给数据起名字),并存储到索引数据库中。

(3)用户交互检索信息,检索器会从索引数据库中获取数据进行相应的检索处理。

(4)同时,用户输入信息会被存储到用户日志数据库中。

(5)用户日志数据库中的数据会交给日志分析器进行处理。

(6)日志分析器会根据大量的用户数据去调用原始数据库和索引数据库,改变排名结果或进行其他操作。

三、网络爬虫实现原理与实现技术

3.1、通用网络爬虫VS聚焦网络爬虫

  1. 通用网络爬虫
  2. 聚焦网络爬虫

    聚焦网络爬虫,是有目的的进行爬取。
    必须增加目标的定义和过滤机制。
    其执行原理和过程需要比通用网络爬虫多出三步,即目标的定义、过滤无关链接、下一步要爬取的 URL 地址的选取等。本质上就是增加了一个过滤机制

3.2、爬行策略

爬行策略 具体说明
深度优先爬行策略 A-D-E-B-C-F-G
广度优先爬行策略 A-B-C-D-E-F-G
大站优先策略 优先爬取大站(网页数量多的网站)中的 URL 地址
反链策略 优先爬取反链数量(被其他网页指向的次数)多的网站
其他爬行策略 如 OPIC 策略、Partial 策略、PageRank 策略等
反链策略要防止作弊现象,某些循环指向判断机制。

3.3、网站更新策略

更新策略 具体说明
用户体验策略 大部分用户只关注排名靠前的网页,爬虫优先更新排名结果靠前的网页
历史数据策略 依据网页历史更新数据,利用数学建模,预测下一次更新时间,从而确定更新周期
聚类分析策略 一般具有类似属性的网页更新频率类似–>对海量网页进行聚类分析,形成多个类–>对同一个类抽样,取平均值更新–>从而确定爬行频率

3.4、网站分析算法

网页分析算法 具体说明
基于用户行为 基于用户访问行为(如访问频率、时长等)
基于网络拓扑(如PageRank,谷歌引擎核心算法) 依靠网页间链接关系计算权重,进行排名
基于网页内容 依据网页数据、文本网页内容特征等