Scrapy爬虫框架解析
Scrapy框架解析
Scrapy框架大致包括以下几个组件:Scrapy Engine、Spiders、Scheduler、Item Pipeline、Downloader;
组件
Scrapy Engine
这是框架的核心,负责控制数据流在整个系统的各个组件间的流动过程,并且在特定动作发生时触发相应事件。
Scheduler
调度程序从Scrapy引擎接受其传递过来的Request对象,并且将该对象加入到队列中,下次Scrapy引擎发出请求时再将对象传递给引擎。
Downloader
下载器负责对目标页面发出请求并且获取到页面反馈的数据,之后传递给Scrapy引擎,最终传递给爬虫进行数据提取。
Spiders
爬虫是Scrapy的用户自行编写的程序用来提取数据,针对下载器返沪的Response进行分析,或者指定其它需要跟进的URL和处理方法。
Item Pipeline
数据管道负责处理被爬虫提取出来的Item数据,可以定义多个数据管道来做多种不同的数据操作,比如数据清理、验证、写入数据库;Item可以在不同的数据管道中进行传递,可以设置每个数据管道的优先级,Item会按照优先级依次经过所有的数据管道。
流程
它的流程图如下:
步骤如下:
- 启动爬虫程序时,引擎开始爬取程序中给定的爬虫,然后获取到需要抓取的URL网址(可以通过爬虫类的属性Start_urls来指定或者重载爬虫类的start_request方法指定),然后将URL网址的Request传递给调度器;
- 下载器从调度器那获取到相应的请求后发出请求,获得页面返回的数据,将返回的数据以Response的形式传递给爬虫;
- 爬虫针对Response中的数据进行分析,提取出相应的数据以后,将数据填充到Item中,并且传递给数据管道;
- 数据管道根据优先级顺序对Item依次进行处理,经过验证等后将Item中的数据保存到数据库中;
- 继续从调度器中获取到下一个URL请求传递给下载器,重复第二步后的步骤;
- 调度器中没有请求时,爬虫引擎则停止程序;
Scrapy爬虫框架解析的更多相关文章
- Python之Scrapy爬虫框架安装及简单使用
		题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ... 
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250
		scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ... 
- Scrapy爬虫框架(实战篇)【Scrapy框架对接Splash抓取javaScript动态渲染页面】
		(1).前言 动态页面:HTML文档中的部分是由客户端运行JS脚本生成的,即服务器生成部分HTML文档内容,其余的再由客户端生成 静态页面:整个HTML文档是在服务器端生成的,即服务器生成好了,再发送 ... 
- Scrapy爬虫框架中的两个流程
		下面对比了Scrapy爬虫框架中的两个流程—— ① Scrapy框架的基本运作流程:② Spider或其子类的几个方法的执行流程. 这两个流程是互相联系的,可对比学习. 1 ● Scrapy框架的基本 ... 
- Python爬虫教程-31-创建 Scrapy 爬虫框架项目
		本篇是介绍在 Anaconda 环境下,创建 Scrapy 爬虫框架项目的步骤,且介绍比较详细 Python爬虫教程-31-创建 Scrapy 爬虫框架项目 首先说一下,本篇是在 Anaconda 环 ... 
- Python-S9-Day126——Scrapy爬虫框架
		01 今日内容概要 02 内容回顾和补充:scrapy 03 内容回顾和补充:网络和并发编程 04 Scrapy爬虫框架:pipeline做持久化(一) 05 Scrapy爬虫框架:pipeline做 ... 
- 手把手教你如何新建scrapy爬虫框架的第一个项目(上)
		前几天给大家分享了如何在Windows下创建网络爬虫虚拟环境及如何安装Scrapy,还有Scrapy安装过程中常见的问题总结及其对应的解决方法,感兴趣的小伙伴可以戳链接进去查看.关于Scrapy的介绍 ... 
- scrapy爬虫框架教程(二)-- 爬取豆瓣电影
		前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大家讲解一个完整爬虫的流程. 工具和环境 语言:python 2 ... 
- Scrapy  爬虫框架学习笔记(未完,持续更新)
		Scrapy 爬虫框架 Scrapy 是一个用 Python 写的 Crawler Framework .它使用 Twisted 这个异步网络库来处理网络通信. Scrapy 框架的主要架构 根据它官 ... 
随机推荐
- hdu  6125 -- Free from square(状态压缩+分组背包)
			题目链接 Problem Description There is a set including all positive integers that are not more then n. Ha ... 
- 截取TableView生成图片
			先看一下实例效果: 如果所示,这是一个在APP中截图,并调起微信客户端,发送给好友的例子,图片就是一个tableView的截图. 先实现一个小例子,如果tableVIew里面的内容,没有超过当前屏幕显 ... 
- Ignite Web 控制台(使用官方免费部署的控制台)
			前提: 假设已安装ignite,并且安装路径为:/usr/apache-ignite-fabric-2.1.0-bin 1.下载Web Agent 打开链接:https://console.gridg ... 
- axios.js
			Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ... 
- poj 2528 poster经典线段树+lazy+离散化
			#include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; #def ... 
- oracle之备份详解
			1.冷备份(执行冷备份前必须关闭数据库) 物理备份(备份物理数据库文件) 2.热备份(热备份是当数据库正在运行时进行数据备份的过程.执行热备份的前提是:数据库运行在可归档日志模式.适用于24X7不间断 ... 
- Java的常用操作符
			操作符用于接受一个或多个参数,并生成一个新的值.加号和一元的正号(+).减号和一元的负号(一).乘号(*).除号(/)以及赋值号(=)的用法和大多数编程语言都类似. 操作符作用于操作数,生成一个新值. ... 
- ASM的备份集在文件系统上恢复测试
			背景:最近时常有客户咨询这类问题,其实很简单一个操作,但由于每个人的理解差异,也容易出现各种问题或者误解,本文主要总结下这个过程以及常遇到的问题处理. 环境:Site A(Oracle RAC 11. ... 
- JavaScript基本语法2
			javaScript中要显示> .<必须使用> .<,如果是不显示但是要作为条件可以直接使用>.<. 接下来是JavaScirpt函数: 要使用func ... 
- JavaScript 30 - 2  学习笔记
			学习JavaScirpt30的笔记! 有意思! 2-------> CSS clock 效果是这样的.... 这是改良过后的 版本.... 话不多说,直接来看代码. 首先是html部分 &l ... 
