Scrapy初级框架介绍以及pipline使用

Scrapy介绍
● 什么是Scrapy
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取
Scrapy使用了Twisted异步网络框架,可以加快我们的下载速度

http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html

异步和非阻塞的区别

 Scrapy初级框架介绍以及pipline使用_第1张图片

异步:调用在发出之后,这个调用就直接返回,不管有无结果
非阻塞:关注的是程序在等待调用结果时的状态,指在不能立刻得到结果之前,该调用不会阻塞当前线程


Scrapy工作流程

Scrapy初级框架介绍以及pipline使用_第2张图片

Scrapy初级框架介绍以及pipline使用_第3张图片

Scrapy初级框架介绍以及pipline使用_第4张图片 

 

另一种爬取方式

Scrapy初级框架介绍以及pipline使用_第5张图片

 

Scrapy(引擎) 总指挥:负责数据和信号的在不同模块间的传递  scrapy已经实现
Scheduler(调度器)  一个队列,存放引擎发过来的request请求   scrapy已经实现
Downloader(下载器) 下载把引擎发过来的requests请求,并返回给引擎   scrapy已经实现
Spider(爬虫) 处理引擎发来的response,提取数据,提取url,并交给引擎 需要手写
Item Pipline(管道) 处理引擎传过来的数据,比如存储  需要手写
Downloder Middlewares(下载中间件) 可以自定义的下载扩展,比如设置代理 一般不用手写
Spider Middlewares(中间件) 可以自定义requests请求和进行response过滤 一般不用手写

Scrapy入门

1 创建一个scrapy项目
scrapy startproject mySpider

2 生成一个爬虫
scrapy genspider demo "demo.cn"

3 提取数据
完善spider 使用xpath等

4 保存数据
pipeline中保存数据

命令运行爬虫

scrapy crawl qb     # qb爬虫的名字

在pycharm运行爬虫

from scrapy import cmdline

cmdline.execute("scrapy crawl qb".split())

pipline使用


从pipeline的字典形可以看出来,pipeline可以有多个,而且确实pipeline能够定义多个

为什么需要多个pipeline:

1 可能会有多个spider,不同的pipeline处理不同的item的内容

2 一个spider的内容可以要做不同的操作,比如存入不同的数据库中

注意:

1 pipeline的权重越小优先级越高

2 pipeline中process_item方法名不能修改为其他的名称

你可能感兴趣的:(爬虫)