scrapya框架

初识scrapy框架

首先我认为scrapy框架和编写的普通爬虫文件没有什么区别 唯一不同的是它可以把你得各种爬虫需求进行封装 而一些中间件也会帮助你实现你的爬虫需求 一般来说只需要编写items.py spiders settings pipelines这四个模块的内容 这样简单明了 高效便捷 不得不提的是scrapy框架实现去重简直太优秀 Scrapy 使用了 Twisted['twɪstɪd] 异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求 必须夸 加鸡腿

scrapy框架流程,结构

官方流程图

Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

Downloader Middlewares(下载中间件):可以自定义扩展下载功能的组件(代理、cokies等)。

Spider Middlewares(Spider中间件):可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

读到这里是不是感觉   脑壳疼(其实我也是) 这里有简单的图

入手使用scrapy框架

1.创建项目:

先切换到自定义的目录下 

执行命令:

scrapy startproject (爬虫名字:spiderproject)

2.创建(普通)文件

切换到项目目录下 进入项目主目录 创建爬虫文件

执行命令:

scrapy genspider baiduspider 域名(baidu.com)

创建文件

切换到项目目录下 进入项目主目录 创建爬虫文件

执行命令:

scrapy genspider baiduspider 域名(baidu.com)

3.用pycharm打开项目

如图所示

4.运行爬虫文件

先切换到爬虫文件所在目录

命令行:scrapy crawl (爬虫文件名字)

scrapy框架如何工作

启动爬虫:

Scrapy框架为Spider的 start_urls 属性中的每个url创建了Request 对象,并将 parse 方法作为回调函数(callback)赋值给了requests,而requests对象经过调度器的调度,执行生成response对象并送回给parse() 方法进行解析,所以请求链接的改变是靠回调函数实现的。

yield scrapy.Request(self.url, callback=self.parse)  <必须有>

总结: 

HOW  scrapy框架协调工作

1.spider的yield将request发送给engine

2.engine对request进行排队处理 不做任何操作 在scheduler需要时返回给scheduler

3.scheduler生成request交给engine

4. engine拿到request通过middleware发送给downloader

5.downloader在获取到response后 经过middleware发送给engine

6. engine在获取到response后,返回给spider,spider会对response进行处理 解析出items或者requests

7.将解析出来的items或者requests,items  发送给pipelines,将requests发送给scheduler

8.只有调度器中不存在request时,程序才停止,及时请求失败scrapy也会重新进行请求

官方地址:

https://scrapy.org/download/

官方文档中文版

http://doc.scrapy.org/en/latest

你可能感兴趣的:(scrapya框架)