第一章:scrapy入门知识与安装

入门知识

什么是scrapy

Scrapy 是一个快速、高效、异步多进程的高级网页抓取框架,用于抓取网站并从其页面中提取结构化数据。它有非常广泛的用途,包括从数据挖掘到监控和自动化测试等等。

运行流程图以及解释

在这里插入图片描述

流程解析

Scrapy 中的数据流由引擎控制,运行流程如下所示:

  1. 引擎从 Spider 中获取要抓取的初始请求。

  2. 引擎向调度器发送一个调度请求,并要求调度器返回一个请求对象(url)。

  3. 调度器将准备好的请求对象返回给引擎。

  4. 引擎将请求发送到下载器,通过下载器中间件( process_request())下载该请求的内容。

  5. 一旦页面下载完成,下载器生成一个响应(带有页面内容)并将其发送到引擎,通过下载器中间件(参见 process_response())。

  6. 引擎从下载器接收响应并将其发送给Spider进行处理(处理的过程是用户自定义),通过Spider中间件(参见 process_spider_input())。

  7. Spider 处理响应,并将抓取的项目(结果)或新的请求(要跟踪的url)返回给引擎,通过 Spider 中间件(参见 process_spider_output())。

  8. 引擎将处理后的项目(结果)发送到项目管道进行结果的存储或使用。同时将处理后的请求发送到调度器,并询问是否有下一个请求需要继续爬取,如果有则重复1-8的动作。

注:该过程会一直重复(从第 1 步开始),直到再也没有来自调度器的请求而结束。

名词解释

1、引擎(EGINE)

引擎负责控制系统所有组件之间的数据流,并在某些动作发生时触发事件。位于上图的最中心位置,也是scrapy框架的核心部件。

2、调度器(SCHEDULER)

调度器接收来自引擎的请求,并在引擎请求时将它们排入队列以便稍后(也给引擎)提供它们,可以认为是一个URL的队列, 队列的插入和取出由引擎操作, 同时调度器还会去除重复的网址。

3、下载器(DOWLOADER)

下载器负责获取网页并将获取的内容提供给引擎,然后引擎再将它们提供给spiders,下载器是建立在twisted这个高效的异步模型上的。

4、爬虫(SPIDERS)

Spiders 是由用户编写的自定义类,用于解析响应(responses)并从中提取项目或要遵循的其他请求。有关更多信息,请参阅spiders

5、项目管道(ITEM PIPLINES)

一旦项目被Spider提取(或抓取),项目管道负责处理项目。典型的任务包括清理、验证和持久化(如将项目存储在数据库中)。有关更多信息,请参阅项目管道

6、下载器中间件(Downloader Middlewares)

下载器中间件是位于引擎和下载器之间的特定挂钩,并在请求从引擎传递到下载器时处理请求,以及从下载器传递到引擎的响应。

如果您需要执行以下操作之一,请使用下载器中间件:

  • 在请求发送到下载器之前处理请求(即在 Scrapy 将请求发送到网站之前);
  • 在将其传递给 Spiders 之前更改收到的响应;
  • 发送一个新的请求而不是将接收到的响应传递给 Spiders;
  • 在不获取网页的情况下将响应传递给 Spiders;
  • 静默的放弃一些请求。

有关更多信息,请参阅下载器中间件

7、爬虫中间件(Spider Middlewares)

Spider 中间件是位于 Engine 和 Spider 之间的特定挂钩,能够处理 Spider 输入(响应)和输出(项目和请求)。

如果您需要执行以下操作之一,请使用 Spider 中间件:

  • spider回调的后期处理输出 - 更改/添加/删除请求或项目;
  • start_requests的后期处理;
  • spider的异常处理;
  • 根据响应内容为某些请求调用 errback 而不是回调。

有关更多信息,请参阅爬虫中间件

驱动方式

Scrapy 是用 Twisted 编写的,这是一个流行的 Python 事件驱动网络框架。因此,它使用非阻塞(异步)代码实现并发。

scrapy的安装

Anaconda或Miniconda

如果你的开发环境已经安装了Anaconda软件,那么安装过程将非常方便,我也推荐你尽量使用Anaconda进行python环境的搭建,因为它的确是非常方便的。

界面安装

如下图直接在所有包中搜索scrapy,选中后进行安装即可

在这里插入图片描述

命令行安装

通过conda

conda install -c conda-forge scrapy

通过pip

pip install Scrapy

其他系统或非Anaconda安装方式

其他安装方式,来自scrapy官网:https://docs.scrapy.org/en/latest/intro/install.html

结束语

当scrapy包安装好了之后,下一步我们就将初始化一个项目,并介绍项目中各个文件的功能,同时我们将通过一个小例子来初步熟悉scrapy,感受scrapy的独特魅力。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339