scarpy据说是目前最强大的爬虫框架,没有之一。就是这么自信。

官网都是这么说的。

An open source and collaborative framework for extracting the data you need from websites.

In a fast, simple, yet extensible way.

 一个开源的,协作的框架从网络收集你需要的数据,是简单,快速以及可扩展的。

那么学习之前,首先要学习一个原理。

Scarpy有几个模块

1.engine 引擎,框架已经实现,不需要我们写,它是scrapy能够进行的重要部件。好比车的发动机。

2.spiders  爬虫文件

3.schedule 调度器    对于发起的请求入队列

4.downloader下载器  从互联网中下载网页源代码

5,Itempipline 管道文件 ,用于可持续化存储数据,可以存储在MySQL,MongoDB,Redis,也可以保存于文件。

通过这个图可以看出scrapy工作的原理。

1,spiders 将发送的请求request(url)发送给 scrapy engine 引擎。然后引擎发送给调度器(scheduler),调度器对发送来的请求进行排序,入队列

2. scheduler调度器将请求request(url) ,发给scrapy engine引擎,然后引擎(Engine)将请求request 通过Downloader Middleware(下载器中间建)发送给Downloader下载器。

3,下载器Downloader 向互联网发送请求(request),下载网页源代码。得到response 响应,响应response通过 SpiderMiddleWares,发送给Spiders爬虫文件。

4.爬虫spiders对数据进行提取,然后发送数据交给Itempipeline 管道,管道将数据进行持久化操作或者保存。

spiders对下载器下载的网页源码进行数据机器,scrapy提供了css选择器。可以方便提取相关的数据。

通过这些步骤可以看出来,scrapy engine是占据很重要的位置。它负责联系各种组件之间的信号signals传递。

通过以下图,可以看出来,Scrapy需要我们书写的靳靳是spider,ItemPipeline,提取数据和持久化数据操作。其余的都已经替我们实现了。

scrapy原理的更多相关文章

  1. Scrapy 原理

    Scrapy 原理 一.原理 scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架.可以应用在包括数据挖掘,信息处理或存储历史数据等一系列程序中. 二.工作流程 Scrapy Engi ...

  2. scrapy 原理,结构,基本命令,item,spider,selector简述

    原理,结构,基本命令,item,spider,selector简述 原理 (1)结构 (2)运行流程 实操 (1) scrapy命令: 注意先把python安装目录的scripts文件夹添加到环境变量 ...

  3. 基于scrapy源码实现的自定义微型异步爬虫框架

    一.scrapy原理 Scrapy 使用了 Twisted异步网络库来处理网络通讯.整体架构大致如下 Scrapy主要包括了以下组件: 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事务(框 ...

  4. 学习scrapy框架爬小说

    一.背景:近期学习python爬虫技术,感觉挺有趣.由于手动自制爬虫感觉效率低,了解到爬虫界有先进的工具可用,尝试学学scrapy爬虫框架的使用. 二.环境:centos7,python3.7,scr ...

  5. 01.scrapy入门

    Scrapy快速入门 Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,它使用Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求. ...

  6. java网络爬虫----------简单抓取慕课网首页数据

    © 版权声明:本文为博主原创文章,转载请注明出处 一.分析 1.目标:抓取慕课网首页推荐课程的名称和描述信息 2.分析:浏览器F12分析得到,推荐课程的名称都放在class="course- ...

  7. python网络爬虫之scrapy 工程创建以及原理介绍

    执行scrapy startproject XXXX的命令,就会在对应的目录下生成工程 在pycharm中打开此工程目录:并在Run中选择Edit Configuration 点击+创建一个Pytho ...

  8. scrapy暂停和重启,及url去重原理,telenet简单使用

    一.scrapy暂停与重启 1.要暂停,就要保留一些中间信息,以便重启读取中间信息并从当前位置继续爬取,则需要一个目录存放中间信息: scrapy crawl spider_name -s JOBDI ...

  9. 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理

    第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理 网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认 ...

随机推荐

  1. python数据分析中常用的库

    Python是数据处理常用工具,可以处理数量级从几K至几T不等的数据,具有较高的开发效率和可维护性,还具有较强的通用性和跨平台性,这里就为大家分享几个不错的数据分析工具,需要的朋友可以参考下 Pyth ...

  2. 20175120彭宇辰 《Java程序设计》第十一周学习总结

    教材内容总结 第十三章 Java网络编程 一.URL类 一个URL对象包含的三个基本信息:协议.地址和资源. -协议:必须是URL对象所在的Java虚拟机支持的协议,常用的有:Http.Ftp.Fil ...

  3. SQL学习记录:定义(一)

    --1.在这里@temp是一个表变量,只有一个批处理中有效,declare @temp table; --2. 如果前面加#就是临时表,可以在tempDB中查看到,它会在最后一个使用它的用户退出后才失 ...

  4. 转载:AWR介绍使用

    转载自 http://www.cnblogs.com/lanzi/archive/2011/03/07/1975096.html 自动工作负载库(Automatic Workload Reposito ...

  5. error C2065: ‘__in’ : undeclared identifier

    转自VC错误:http://www.vcerror.com/?p=1307 问题描述: 编译时出现: error C2065: '__in' : undeclared identifier error ...

  6. net core配置log4net需要注意的地方

    和netframework不一样的是,netcore 没有assembly文件.所以配置的时候需要注意: 1.配置文件可以没有 <configSections> <section n ...

  7. Linux环境下对大小写敏感,linux环境升级node

    linux对大小写敏感 在window下可以正常运行的代码,在linux环境下报错,找不到文件,因为window下对大小写不敏感,linux对大小写敏感 linux环境下node升级 1.安装nvm ...

  8. 用webdriver模仿浏览器 爬取豆瓣python书单

    用webdriver模仿浏览器 爬取豆瓣python书单 其中运用到os 模块 作用是生成文件夹 存储爬取的信息 etree 用于xpath解析内容 详细代码如下 可用我的上一篇博客存取到excel当 ...

  9. div里添加元素样式

    function YUEFEN() { $(".BBNL_2").click(function () { $(".BBNL_2").css("colo ...

  10. Apache Shiro 认证+授权(一)

    1.核心依赖 <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-co ...