Python网络爬虫与信息提取(8)—— scrapy框架基础知识

前言

Scrapy爬虫框架结构

  • 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合
  • 爬虫框架是一个半成品,能够帮助用户实现专业的网络爬虫
  • 约束了用户使用的模板

5+2结构

在这里插入图片描述
5表示的是SPIDERS、ENGINE、ITEM PIPELINES、DOWNLOADER、SCHEDULER这五个模块
2表示SPIDERS与ENGINE链接的中间键和ENGINE与DOWNLOADER链接的中间键

三条主要数据流路径

路径一:1 -> 2从SPIDERS经过ENGINE到达SCHEDULER
在这里插入图片描述

ENGINE从SPIDERS获取爬取用户的请求叫做requests,ENGINE将爬取请求转交给SCHEDULER模块,SCHEDULER模块负责对爬取请求做调度。

路径二:3 -> 4 -> 5 -> 6
在这里插入图片描述

ENGINE模块从SCHEDULER模块获取下一个要爬取的网络请求,这个时候是真实的要去网络上爬取的请求,ENGINE模块获得请求后通过中间键发送给DOWNLOADER模块,它拿到请求后真实的链接互联网,并且爬取相关的网页,爬取之后,DOWNLOADER模块将形成的内容创建成一个对象叫response响应对象。封装成response后通过中间键传给ENGINE发送给SPIDERS,这一条路径一个真实的爬取url的请求,经过SCHEDULER、DOWNLOADER最终返回了相关内容给SPIDERS。

路径三:7 -> 8
在这里插入图片描述

SPIDERS处理从DOWNLOADER获得的响应(网络爬取获得的相关内容),产生两个数据类型一个叫爬取项(scrapy item)ITEM,另一个是新的爬取请求。SPIDERS生成两个数据类型后将他传给ENGINE,ENGINE模块分析两种类型数据,如果我们爬取一个链接然后产生了新的链接我们也是感兴趣的,我们可以继续将新的requests传给SCHEDULER,走我们的路径二,这样可以实现爬取多个网页,ITEMS数据则直接发送给ITEM PIPELINES模块处理。

框架出入口

入口:SPIDERS
出口:ITEM PIPELINES
中转站:ENGINE
在这里插入图片描述

已实现的模块

下图三个模块,框架已经给我们实现了,用户不用去编写他们,他们会按照既定的功能完成他们的任务:
在这里插入图片描述

用户实现的模块

  • SPIDERS:用来向整个框架提供访问的URL链接,同时解析网络上页面获得的内容
  • ITEM PIPELINE:负责对提取的信息进行处理

框架解析

ENGINE:

  • 控制所有模块之间的数据流
  • 根据条件触发事件
  • 不需要用户修改

DOWNLOADER:

  • 根据用户提供的请求,下载网页
  • 不需要用户修改

SCHEDULER:

  • 对所有爬取请求进行调度管理
  • 不需要用户修改

DOWNLOADER MIDDLEWARE:

  • 目的:实施ENGINE、SCHEDULER、DOWNLOADER之间进行用户可配置的控制
  • 功能:修改丢弃、新增请求或者响应
  • 用户可以编写配置代码

SPIDERS:

  • 解析DOWNLOADER返回的响应
  • 产生爬取项
  • 产生额外的爬取请求
  • 用户编写配置代码

ITEM PIPELINES:

  • 以流水线处理SPIDERS产生的爬取项
  • 由一组操作顺序组成,类似流水线,每个操作是一个ITEM PIPELINES类型
  • 可能操作包括:清理、检验和查重爬取项中的HTML数据、将数据存储到数据库
  • 用户编写配置代码

SPIDERS MIDDLEWARE:

  • 目的:对请求和爬取项的再处理
  • 功能:修改、丢弃、新增请求或者爬取项
  • 用户可以配置代码

request库和scrapy比较

相同点:

  • 两者都可以进行页面请求和爬取,python爬虫的两个重要技术路线
  • 两者可用性都好,文档丰富,入门简单
  • 两者都没有处理js、提交表单、应对验证码等功能,需要扩展库

不同点:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_37668436/article/details/105857744