以下内容均为本人的学习笔记,仅供个人学习复习使用,非本人同意,禁止转载。

Scrapy是什么?

Scrapy 是一个为了爬取网站数据而编写的一个结构化的框架,通过这一框架相比于自己写一个完整的爬虫程序来所,更为方便(轻量)、快速的抓取数据。

Scrapy 爬虫框架简介

Scrapy 是基于twisted框架开发而来的框架。何为twisted?twisted中文意思是扭曲的,twisted是一个异步网络框架。那异步又是什么?异步的意思与同步相反,同步:一般的程序的执行步骤都是等待前面一个程序调用完了再执行下一个程序,比如我们请求一个网址,就要等到得到网址的响应后再进行下一步操作,这就是同步;异步:就是等前一个程序调用后,这调用就直接返回,不用再等待前面的结果而浪费资源了。这两个例子也是阻塞(同步)和非阻塞(异步)。
好了,接下来继续。

Scrapy的流程

借用网上的图来解释,很常见的一张scrapy流程图:
Scrappy爬虫框架笔记——介绍
流程顺序: scheduler——download——spiders(或url再存入)——item pipeline

  • Scheduler:调度器,存储url的队列
  • Download:下载器,通过得到的request请求得到response,再将response发给”spiders爬虫“
  • Spiders:爬虫,一系列提取数据的程序。另外,这张图不同的是,可能会通过url地址得到url地址再存入 scheduler的url队列中,什么意思呢?就比如你点开了一个网址,但是网址里还有其它的网址。
  • Item Pipeline:管道,将前一次的结果作为下一次的输入,处理items;
  • Scrapy Engine:scrapy引擎,在不同模块间传递数据;如图把Scheduiler的request对象调动给下载器,把下载器的response调动给spider,把Spiders的items调动给Item Pineline。(可以理解引擎为中间商,但是不赚差价的那种hh)
  • Downloader Middlewares:下载中间件,处于下载器和引擎之间;Scrapy Engine调动的request会经过中间件到下载器,为何要经过这一步呢?这是因为有些request数据需要进行一些处理、过滤等等。
  • Spider Middlewares:爬虫中间件,处于爬虫和引擎之间;用处同上,会将response进行一些处理、过滤等等。
  • 这里有些想法,我个人理解:为什么只有两个中间件呢?因为需要对得到的requests和responses进行处理,但是为什么Item PipeLine和引擎之间没有中间件呢?因为Item Pineline本身就是对item进行处理的,所以不需要额外的中间件来处理。

xpath语法参考

相关文章: