# 13. Scrapy

### 标签：

`Python` `API` `Web`

### 简介：

**Scrapy** Scrapy是用Python编写的用于抓取网站和提取结构化数据的应用程序框架。Scrapy也可用于使用API​​（如亚马逊公司的Web服务），或者作为网络爬虫来提取数据。用户只需要定制开发几个模块就可以轻松的实现一个爬虫，用来抓取网页内容以及各种图片。

**Scrapy** Scrapy中的数据流由执行引擎控制，其过程如下:

1.引擎打开一个网站(open a domain)，找到处理该网站的Spider并向该spider请求第一个要爬取的URL(s)。

2.引擎从Spider中获取到第一个要爬取的URL并在调度器(Scheduler)以Request调度。

3.引擎向调度器请求下一个要爬取的URL。

4.调度器返回下一个要爬取的URL给引擎，引擎将URL通过下载中间件(请求(request)方向)转发给下载器(Downloader)。

5.一旦页面下载完毕，下载器生成一个该页面的Response，并将其通过下载中间件(返回(response)方向)发送给引擎。

6.引擎从下载器中接收到Response并通过Spider中间件(输入方向)发送给Spider处理。

7.Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎。

8.引擎将(Spider返回的)爬取到的Item给Item Pipeline，将(Spider返回的)Request给调度器。

9.(从第二步)重复直到调度器中没有更多地request，引擎关闭该网站。

[Scrapy官网](https://scrapy.org/)

[Scrapy使用教程](https://github.com/yidao620c/core-scrapy)

## 项目地址：

<https://github.com/scrapy/scrapy>

## 项目文档：

### For contributor

* <https://github.com/scrapy/scrapy/wiki>

### For user

* <https://scrapy.org/download/>

## 参考链接：

* <http://www.jianshu.com/p/a8aad3bf4dc4>
* 作者：叶淞任
