scrapy框架介绍

Scrapy框架图:数据库

scrapy-engine:引擎,负责itemPipeline+Spiders+Scheduler+Downloader间的通信和数据传递缓存

scheduler:调度器,负责接收引擎发送过来的Requests请求,并将请求按必定方式排列入队,以后等待引擎来请求时交给引擎框架

downloader:下载器,负责下载引擎发送的全部Requests请求,并将其捕获到的Responses交还给引擎,引擎交给spiders来处理dom

spiders:负责处理全部的Responses,从中分析提取数据,获取item字段须要的数据,并将须要跟进的URL提交给引擎,再次进入调度器scrapy

itempipeline:负责处理spiders中获取到的item字段,并进行处理(去重/持久化存储:就是保存数据)ide

downloader middlerwares:下载中间件,是一个自定义扩展下载功能的组件网站

spiders middlewares:spider中间件,操做引擎和spiders之间通讯的中间件(进入spiders的Responses和从spiders出去的Requests)中间件

 

流程(简化版):blog

程序开始运行ip

spiders将须要处理的网站URL交给引擎,引擎再将Requests请求交给调度器scheduler进行处理:后者将Requests请求按必定方式排列入队;

必定时间后(引擎要求取回Resquests)调度器将处理过的Requests交给引擎,引擎按照下载中间件downloader middlewares的设置要求将

Requests交给下载器downloader;下载器处理Requests(若是Requests下载失败,引擎会告诉调度器,让后者记录并在以后从新下载),下

载成功的Resquests能够捕获到相应的Responses;下载器将Responses(spider中间件处理过的)交给引擎,随后引擎将Responses交给spiders

处理;spiders处理Responses,将提取到的item字段数据交给itempipeline,同时将须要跟进的URL交给引擎,引擎再交给调度器,以此循环。

当调度器中不存在Requests请求时,程序运行结束

 

Scrapy项目实现步骤:

1.创建项目:

  -在CMD下输入scrapy3 startproject item_name(项目名)

  -cd item_name>>>scrapy3 genspider spider_name(spider名) domain_name(域名)

2.在items.py文件中定义字段,这些字段用来临时存储须要保存的数据(方便之后数据保存到数据库或本地)

3.在spider_name.py文件下编写爬虫脚本

4.在pipelines.py文件下保存数据

5.在settings.py文件下配置相关环境,这一步也不是必须作的

  -将ROBOTSTXT_OBAY=True修改成ROBOTSTXT_OBAY=False(ROBOTSTXT协议规定哪些目录能够抓取)

  -设置Requests头信息,取消注释行DEFAULT_REQUEST_HEADERS={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94             Safari/537.36'}

  -取消如下注释:Scrapy能够缓存已有的Requests,当再次请求时,若是存在缓存文档则返回缓存文档,而不用去网站请求,既能够加快本地缓存速度,也能够减轻网站压力

相关文章
相关标签/搜索