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会按照优先级依次经过所有的数据管道。

流程

它的流程图如下:

步骤如下:

  1. 启动爬虫程序时,引擎开始爬取程序中给定的爬虫,然后获取到需要抓取的URL网址(可以通过爬虫类的属性Start_urls来指定或者重载爬虫类的start_request方法指定),然后将URL网址的Request传递给调度器;
  2. 下载器从调度器那获取到相应的请求后发出请求,获得页面返回的数据,将返回的数据以Response的形式传递给爬虫;
  3. 爬虫针对Response中的数据进行分析,提取出相应的数据以后,将数据填充到Item中,并且传递给数据管道;
  4. 数据管道根据优先级顺序对Item依次进行处理,经过验证等后将Item中的数据保存到数据库中;
  5. 继续从调度器中获取到下一个URL请求传递给下载器,重复第二步后的步骤;
  6. 调度器中没有请求时,爬虫引擎则停止程序;

转载于:https://www.cnblogs.com/George1994/p/7543993.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/369212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Couchbase 2.0归类视图简介

大多数应用程序必须处理“主/详细”类型的数据: 啤酒厂和啤酒 部门和员工 发票和项目 … 例如,这对于创建如下应用程序视图是必需的: 借助Couchbase和许多面向文档的数据库,您可以采用不同的方式来处理此问题,您…

(转)利用WPF的ListView进行大数据量异步加载

原文:http://www.cnblogs.com/scy251147/archive/2012/01/08/2305319.html 由于之前利用Winform的ListView进行大数据量加载的时候,诟病良多,所以今天试着用WPF的ListView来做了一下,结果没有让我失望,我将一个拥有430…

Css3新属性:calc()

一、前言 calc()看起来像是javascript中的一个函数,而事实上它是用在Css中的,可以用它来计算长度(宽度或高度),能够自动根据不同尺寸的屏幕自动调接数值,从而很轻松的实现自适应布局展示在不同尺寸屏幕下。项目中常常碰…

有关循环和判断的几个小问题

注意在while嵌套的if语句之外,还有一个cin>>n;因为刚刚没有这一部分的时候,执行的结果是这样的: 把while里面的cin>>n;注释掉了之后,在cmd里执行的时候,只能输入数字,但是没有任何的反应。 但其…

PHP7 学习笔记(五)安装event扩展(libevent)

一、描述:有效安排I/O,时间和信号的扩展 使用可用于特定平台的最佳I/O通知机制的事件,是PHP基础设施的libevent端口。 二、下载地址:http://pecl.php.net/package/event 三、安装支持库libevent,需要编译高版本(这里以…

DeferredResult – Spring MVC中的异步处理

DeferredResult是一个可能尚未完成的计算的容器,它将在将来提供。 Spring MVC使用它来表示异步计算,并利用Servlet 3.0 AsyncContext异步请求处理。 简要介绍一下它是如何工作的: RequestMapping("/") ResponseBody public Deferr…

简单的GTK窗体搭建

#include<gtk/gtk.h> //必须引用gtk/gtk.h这个头文件2 int main(int argc,char *argv[]) //标准c语言主函数的声明3 {4 GtkWidget *window; //声明一个窗口控件的指针&#xff0c;其中GtkWidget是…

有关输出图形的代码,我觉得好难啊,好蒙啊。

这里的代码其实没看懂过&#xff0c;自己看到书上这一题的时候也是挺蒙的&#xff0c;压根不知道要怎么下手&#xff0c;照着书上把代码打进去之后也不清楚原理&#xff0c;可怕的是&#xff0c;反反复复对着答案敲了几遍代码&#xff0c;执行结果还是这样的&#xff0c;和课本…

《Web前端开发修炼之道》-读书笔记CSS部分

如何组织CSS-分层 应用 css 的能力分两部分&#xff1a;一部分是css的API&#xff0c;重点是如何用css控制页面内元素的样式&#xff1b;另一部分是css框架&#xff0c;重点是如何对 css 进行组织。如何组织 css 可以有多种角度&#xff0c;例如按功能划分&#xff0c;或者按区…

Windows环境变量的应用

设置环境变量快速打开程序 如果你对桌面上密密麻麻的文件感到烦恼&#xff0c;那么下面的方法可以帮到你。 Step 1 在硬盘的某个位置添加一个文件夹&#xff0c;把你经常用的程序的快捷方式放进这个文件夹&#xff0c;快捷方式重命名最好简单易记&#xff0c;如图 注意 快捷方式…

mysql 备份数据库_mysql数据库备份

前一段时间因为误操作删除了一张表的几条数据&#xff0c;弄得很尴尬&#xff0c;正好这周有空就折腾了下数据备份的知识&#xff0c;现把mysql的数据备份相关实践和心得总结如下&#xff1a;一.使用mysqldump命令备份数据库&#xff1a;备份整个数据库(包括表结构和数据),用法…

JavaScript:Browser 对象

ylbtech-JavaScript&#xff1a;Browser 对象1. Window 对象返回顶部 1、Window 对象 Window 对象 Window 对象表示浏览器中打开的窗口。 如果文档包含框架&#xff08;<frame> 或 <iframe> 标签&#xff09;&#xff0c;浏览器会为 HTML 文档创建一个 window 对象…

使用Apache KeyedObjectPool的ssh连接池

我发现org.apache.commons.pool非常有用且健壮&#xff0c;但没有充分记录。 因此&#xff0c;我将在这里帮助您解释如何使用Apache KeyedObjectPool 。 什么是KeyedObjectPool &#xff1f; 它是一个映射&#xff0c;其中包含多种类型的实例池。 可以使用任意键访问每种类型。…

c语言怎么输入有空格的字符串

c语言怎么输入有空格的字符串 https://blog.csdn.net/qq_44752641/article/details/106118698 采用fgets输入可以识别空格,如输入hello world&#xff0c;输出hello world char str[50]; printf("输入一段字符串&#xff1a;"); fgets(str,50,stdin);若采用scanf&…

深入理解line-height与vertical-align——前端布局常用属性

line-height、font-size、vertical-align是设置行内元素布局的关键属性。这三个属性是相互依赖的关系&#xff0c;改变行间距离、设置垂直对齐等都需要它们的通力合作。下面将主要介绍line-height与vertical-align&#xff1a; 行高 【定义】 line-height行高是指文本行基线之…

UWP开发入门(四)——自定义CommandBar

UWP开发入门&#xff08;四&#xff09;——自定义CommandBar 原文:UWP开发入门&#xff08;四&#xff09;——自定义CommandBar各位好&#xff0c;再次回到UWP开发入门系列&#xff0c;刚回归可能有些不适应&#xff0c;所以今天我们讲个简单的&#xff0c;自定义CommandBar&…

(转)Cobbler无人值守批量安装Linux系统

本文目录&#xff1a; 1.1 pxe安装系统 1.2 cobbler基本介绍 1.3 安装和配置cobbler 1.3.1 安装cobbler 1.3.2 配置dhcp和tftp 1.4 cobbler从本地光盘安装系统 1.4.1 生成distro 1.4.2 提供kickstart文件 1.4.3 提供profile 1.4.4 开始安装 1.5 比pxekickstart好的地方 1.6 让新…

mysql 数据库 应用_MySQL数据库的应用

1、创建一个以你名字为名的数据库&#xff0c;并创建一张表student&#xff0c;该表包含三个字段(id&#xff0c;name&#xff0c;age)&#xff0c;表结构如下&#xff1a;mysql>desc student;---------------------------------------------------------| Field | Type | N…

Spring集成–从头开始应用程序,第1部分

开始之前 在本教程中&#xff0c;您将学习什么是Spring Integration &#xff0c;如何使用它以及有助于解决哪些问题。 我们将从头开始构建一个示例应用程序&#xff0c;并演示Spring Integration的一些核心组件。 如果您不熟悉Spring&#xff0c;请查看我编写的另一本有关Spri…

初学者Web介绍一些前端开发中的基本概念用到的技术

Web开发是比较费神的&#xff0c;需要掌握很多很多的东西&#xff0c;特别是从事前端开发的朋友&#xff0c;需要通十行才行。今天&#xff0c;本文向初学者介绍一些Web开发中的基本概念和用到的技术&#xff0c;从A到Z总共26项&#xff0c;每项对应一个概念或者技术。 初学者W…