Python网络爬虫笔记1

Python网络爬虫笔记1

什么是网络爬虫

有时候对定义的深入理解, 会减少在学习过程中的弯路.

  • 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫

网络爬虫的组成

  • 网络爬虫由控制节点,爬虫节点,和资源库组成.

网络爬虫组成

  • 可以看到网络爬虫可以有多个控制节点, 每个控制节点下可以有多个爬虫节点, 控制节点之间可以互相通信, 同时, 控制节点和其下的各爬虫节点之间也可以进行互相通信, 属于同一个控制节点下的各爬虫之间, 也可以互相通信.
  • 控制节点: 爬虫的中央控制器, 主要负责根据URL地址分配线程, 并调用爬虫节点进行具体的爬行.
  • 爬虫节点: 爬虫节点会按照相关算法, 对网页进行具体的爬行, 主要包括下载网页以及对网页的文本进行处理, 爬行后, 会将对应的爬行结果存储到对应的资源库中.

网络爬虫的类型

实际网络爬虫中, 通常是这几种网络爬虫组合体.

通用网络爬虫

  • 通用网络爬虫又叫全网网络爬虫, 顾名思义, 通用网络爬虫爬去的目标资源在全互联网中. 通用网络爬虫所爬的目标数据是巨大的, 并且爬行的范围也是非常大的, 正是由于其爬取的数据是海量数据, 故而对于这类爬虫来说, 其爬取得性能要求是非常高得, 这种网络爬虫主要应用于大型搜索引擎中, 有非常高得应用价值.
  • 通用网络爬虫主要由: 初始URL集合, URL队列, 页面爬行模块, 页面分析模块, 页面数据库, 链接过滤模块等构成. 通用网络爬虫在爬行得时候会采取一定得爬行策略, 主要有深度优先爬行策略和广度优先爬行策略.

聚焦网络爬虫

  • 也叫主题网络爬虫, 是按照预先定义哈奥得主题有选择性得进行网页爬取得一种爬虫, 聚焦网络爬虫不像通用网络爬虫一样将目标资源定位在全网中, 而是将爬取得目标网页定位在与主题相关得页面中, 此时, 可以节省大量爬取时所需得贷款资源和服务器资源. 聚焦网络爬虫主要应用在对特定信息得爬取中, 主要为某一类特定得人群提供服务.
  • 聚焦网络爬虫主要由初始URL集合, URL队列, 页面爬行模块, 页面分析模块, 页面数据库, 链接过滤模块, 内容评价模块, 链接评价模块等构成. 内容评价模块可以评价内容得重要性, 同理, 链接评价模块也可以评价出链接得重要性, 然后根据链接的内容的重要性, 可以确定哪些页面优先访问. 聚焦网络爬虫的爬行策略主要有四种, 即基于内容评价的爬行策略, 基于链接评价的爬行策略, 基于增强学习的爬行策略和基于语境图的爬行策略.

增量式网络爬虫

  • 增量式更新指的是更新的时候只更新改变的地方, 而未改变的地方不更新, 所以增量式的网络爬虫,在爬取网页的时候, 只爬取内容发生变化的网页或者新产生的网页, 对于未发生内容变化的网页, 则不会爬取. 增量式网络爬虫在一定程度上能够保证所爬取页面, 尽可能使新的页面.

深层网络爬虫

  • 可以爬取互联网中的深层页面, 再此我们首先需要了解深层页面的概念.
  • 网页按存在方式分类, 可以分为表层页面和深层页面. 所谓的表层页面, 指的是不需要提交表单, 使用静态的链接就能够达到的静态页面. 而深层页面则隐藏在表单后面, 不能通过静态链接直接获取, 是需要提交一定的关键词之后才能够获取的页面. 在互联网中, 深层页面的数量往往比表层页面数量要多很多.
  • 爬取深层页面, 需要想办法自动填好对应表单, 所以, 深层网络爬虫最重要的部分即为表单填写部分.
  • 深层网络爬虫主要由: URL列表, LVS列表(LVS指的是标签/数值集合, 即填充表单的数据源), 爬行控制器, 解析器, LVS控制器, 表单分析器, 相应分析器等部分构成.
  • 表单填写有两种类型:
    • 基于领域知识的表单填写, 简单来说就是建立一个填写表单的关键词库, 在需要填写的时候, 根据语义分析选择对应的关键词进行填写.
    • 第二种是基于网页结构的表单填写, 简单说, 这种填写方式一般是领域知识有限的情况下使用, 这种方式会根据网页结构进行分析, 并自动地进行表单填写.

爬虫实现原理

通用网络爬虫

  • 获取初始的URL, 初始的URL地址可以由用户人为的指定, 也可以由用户指定的某个或者某几个初始爬取网页决定.
  • 爬取对应URL地址中的网页, 然后将网页存储到原始数据库中, 并且从原始页面获得新的URL. 存放到URL列表中.
  • 将新的URL放到URL队列中, 在第二步中, 获取了新的URL, 会将新的URL地址放到URL队列中.
  • 从URL队列中读取新的URL. 并依据新的URL爬取页面, 同时从新网页中获取新的URL, 重复上述爬取过程.
  • 满足爬虫系统设置的停止条件时, 停止爬取.

聚焦网络爬虫

  • 将初始URL集合传送到URL队列
  • 从URL队列取出第一个进行页面爬取
  • 对爬取到的页面存储到页面数据库, 通过页面分析模块进行分析, 根据分析结果建立索引数据库, 用户检索对应信息时, 可以从索引数据库中进行相应的检索, 并得到对应的结果.
  • 在爬取过程中, 会爬取到一些新的URL链接, 先经过链接过滤模块过滤一部分, 将剩下的通过页面内容评价模块处理, 进行优先级排序, 放入URL队列.

爬行策略

在待爬取的URL列表中, 应该先爬取哪些. 由爬虫策略决定.

  • 深度优先策略:按照一个网页的拓扑结构, 以深度优先的方式遍历它.
  • 广度优先, 按照拓扑结构一层一层爬取它.

身份识别

在爬取过程中, 爬虫必然需要访问对应的网页, 正规的爬虫一般会告诉对应的网站站长其爬虫的身份, 网站的管理员则可以通过爬虫告知的身份对爬虫进行识别, 我们称这个过程为爬虫的身份识别过程.

  • 爬虫会通过HTTP请求中的 User Agent字段. 告知自己的身份信息.
  • 爬虫访问一个网页的时候, 会根据该站点下的Robots.txt文件来确定可爬取的网页范围, Robots协议时需要网络爬虫共同遵守的协议.