学习Scrapy入门

Scrapy,Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

如何下载scrapy

可以通过pip,conda或者github以及官网上下载。

pip install scrapy

或者

conda install scrapy

推荐使用国内的镜像源下载,否则会极其慢,而且经常会超时(说多了都是泪、、、)

如何新建一个scrapy项目

在Pycharm新建中有很多项目可以选择,例如flask,Django等,就是没有scrapy。所以scrapy的创建需要我们手动才可以。
我们可以通过命令行进入到需要建立项目的路径下,然后通过
scrapy startproject 项目名
即可创建一个scrapy项目。

学习Scrapy入门_第1张图片
文件目录 (图片来自scrapy官方文档)

上图即为一个基本scrapy项目的构成。

Scrapy的架构

学习Scrapy入门_第2张图片
图片来源:Scrapy tutorial
  1. Scrapy Engine
    引擎负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件。 详细内容查看下面的数据流(Data Flow)部分。
  2. 调度器(Scheduler)
    调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎。
  3. 下载器(Downloader)
    下载器负责获取页面数据并提供给引擎,而后提供给spider。
  4. Spiders
    Spider是Scrapy用户编写用于分析response并提取item(即获取到的item)或额外跟进的URL的类。 每个spider负责处理一个特定(或一些)网站。
  5. Item Pipeline
    Item Pipeline负责处理被spider提取出来的item。典型的处理有清理、 验证及持久化(例如存取到数据库中)。
  6. 下载器中间件(Downloader middlewares)
    下载器中间件是在引擎及下载器之间的特定钩子(specific hook),处理Downloader传递给引擎的response。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能。
  7. Spider中间件(Spider middlewares)
    Spider中间件是在引擎及Spider之间的特定钩子(specific hook),处理spider的输入(response)和输出(items及requests)。 其提供了一个简便的机制,通过插入自定义代码来扩展Scrapy功能

一个最基本的爬虫会按照着途中绿色线的顺讯执行。其中的中间件更利于个人对爬虫的自定义和扩展,pipeline则是定义scrapy如何对爬取下来的数据进行处理。具体的流程如下:

  1. 引擎打开一个网站,找到处理该网站的Spider并向该Spider请求第一个要爬取的URL。
  2. 引擎从Spider中获取需要处理的URL并在schedule中进行Request调度
  3. 引擎向schedule请求一个需要进行Request处理的URL
  4. schedule通过下载器中间件将URL发送至下载器对需要爬去的URL进行下载
  5. 一旦URL的内容下载完成,会通过下载器中间件返回一个response到引擎中
  6. 引擎将收到的response返回到Spider中进行处理
  7. Spider处理完response后会返回一个item数据字典和新的request给引擎。
  8. 引擎接受到返回的item发送到pipeline中进行数据的处理(插入到数据库、处理成CSV或json文件、将多媒体文件保存到本地)
  9. 重复第二步直到没有可以处理的request

你可能感兴趣的:(学习Scrapy入门)