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 框架的主要架构 根据它官 ...
随机推荐
- MAC下pyenv和pyenv-virtualenv插件初探
为什么会使用pyenv和pyenv-virtualenv插件 一般mac自带一个python版本,称为系统版本.对于开发者而言,肯定不够用啦.所以需要在同一个mac上组建不同的开发环境并且不会冲突. ...
- Go语言学习笔记(八)golang 操作 Redis & Mysql & RabbitMQ
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 Reids 安装导入 go get github.com/garyburd/redigo/redis import ...
- spring-aop的简单实例注解版
项目结构如图,基本的spring的配置就不在赘述 1.首先编写自定义的切面类 package org.wu.test; import org.aspectj.lang.annotation.After ...
- 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(二)用户接口层之RtspClient类及其构造函数
RtspClient类是myRTSPClient函数库所有特性集中实现的地方. 主要为用户提供: 1. RTSP协议通信接口函数,如DoOPTIONS(): 2. RTSP账号.密码设置函数,如Set ...
- 【Linux SELinux】提升系统安全(一)
本文重点:了解SELinux并能够熟练地启动关闭selinux(就像精通windows系统开关机一样) 背景:在centos5.x之后,selinux 非常完备地成为了系统内核模块,centos5.x ...
- windows10企业版怎么关闭自动更新
windows10企业版怎么关闭自动更新.. 我之所以选择关闭自动的更新的原因: 1.Windows版本是激活版的不是注册版的<其实我想说的是我用的是盗版的> 2.对于为什么禁止[系统更 ...
- CAD快捷键命令
符号键(CTRL开头) CTRL+1 PROPCLOSEOROPEN 对象特性管理器 CTRL+2或4 ADCENTER 设计中心 CTRL+3 CTOOLPALETTES 工具选项板 CTRL+8或 ...
- Andrew Ng机器学习课程笔记--week9(上)(异常检测&推荐系统)
本周内容较多,故分为上下两篇文章. 一.内容概要 1. Anomaly Detection Density Estimation Problem Motivation Gaussian Distrib ...
- C++读取csv表格文件到vector
这个CSV文件假设知道每行有多少个数,也知道数据的格式,即可使用下面简单的方法实现. 我们假设每行有4个数据,依次是int,int,float,float 基本思路是:把每行的数据定为一个类型,放在v ...
- jsp 使用Common-FileUpload组件文件上传及限制上传类型
1.将commons-fileupload-1.3.3.jar复制到Web应用的lib文件夹下,在WebRoot目录下创建limit.jsp页面,在该页面中添加一个文件域的表单,设置类型为 mu ...