scrapy框架讲解

简介:

Scrapy是一个基于Python的开源异步爬虫框架,它被广泛用于从网页或App中,提取数据并将其保存到本地或数据库。由2.8版本以后提供了 http2.0协议的爬虫支持。

扩展:

scrapy是基于twisted框架开发而来,twisted是一个流行的事件驱动,使用了一种非阻塞(即异步)的代码实现并发,Scrapy之所以能实现异步,得益于twisted框架。

安装命令

# 安装命令
pip install scrapy
# 查看安装结果命令
scrapy --v

 显示一下版本页面表示安装成功

 scrapy中文官网

Scrapy一目了然 — Scrapy 2.5.0 文档

 一、Scrapy的五大核心组件

(1) 调度器(Scheduler)

        用来接受引擎发过来的请求,并按照一定的方式进行整理排列,放到队列中,当引擎需要时,交还给引擎。可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址。

(2) 下载器(Downloader)

        负责下载引擎发送的所有Request请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理。Scrapy下载器是建立在twisted这个高效的异步模型上的。

(3) 爬虫(Spider)

        用户根据自己的需求,编写程序,用于从特定的网页中提取自己需要的信息,即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。跟进的URL提交给引擎,再次进入Scheduler(调度器)。

(4) 管道(Pipelines)

        用于接收网络爬虫传过来的数据,以便做进一步处理。例如验证实体的有效性、清除不需要的信息、存入数据库(持久化实体)、存入文本文件等。

(5) 引擎(Engine)

        框架核心,用来处理整个系统的数据流的流动, 触发事务(判断是何种数据流,然后再调用相应的方法)。也就是负责爬虫、管道、下载器、调度器中间的通讯,信号、数据传递等,所以被称为框架的核心。 引擎相当于计算机的CPU,它控制着整个流程。

二、Scrapy框架的工作原理如下:

1.引擎会向spider索要url

2.引擎拿到url地址后会分发给调度器入队列,在调度器中会进行去重等处理

3.调度器会把整理好的url队列分发给下载器,进行下载数据,并把相应内容返回给spider。

       下载器中间件,可以把他理解成是引擎与下载器中间的一个钩子(hook)插件,在这里我们可以修改和添加user-agent、代理ip、cookie、等等模拟浏览器环境行为来对抗各种反爬虫)还可以做异常的捕获与重试等...

4.spider拿到响应后,提取相应并生成item对象分发给管道进行持久化存储。

       spider中间件,可以把他理解成是引擎与下载器中间的一个钩子(hook)插件,处理引擎传递给爬虫的响应或者处理爬虫传递给引擎的请求等。

例如,当运行到 yield scrapy.Request()或者 yield item 的时候,spider中间件会被触发。

5.pipelines管道拿到数据后可以持久化存储到数据库、表格等

三、创建scrapy框架

scrapy startproject BaiDu
cd BaiDu
scrapy genspider baidu www.baidu.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值