Scrapy (网络爬虫框架)入门

一.Scrapy 简介:

Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,Scrapy 使用了 Twisted['twɪstɪd](其主要对手是Tornado)异步网络框架来处理网络通讯,可以加快我们的下载速度,不用自己去实现异步框架,并且包含了各种中间件接口,可以灵活的完成各种需求。

二.Scrapy框架

1.框架图

绿色线是数据流向


2.框架图讲解:

功能讲解:

Scrapy Engine(引擎): 负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,信号、数据传递等。

Scheduler(调度器): 它负责接受引擎发送过来的Request请求,并按照一定的方式进行整理排列,入队,当引擎需要时,交还给引擎。

Downloader(下载器):负责下载Scrapy Engine(引擎)发送的所有Requests请求,并将其获取到的Responses交还给Scrapy Engine(引擎),由引擎交给Spider来处理,

Spider(爬虫):它负责处理所有Responses,从中分析提取数据,获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler(调度器),

Item Pipeline(管道):它负责处理Spider中获取到的Item,并进行进行后期处理(详细分析、过滤、存储等)的地方.

Downloader Middlewares(下载中间件):你可以当作是一个可以自定义扩展下载功能的组件。

Spider Middlewares(Spider中间件):你可以理解为是一个可以自定扩展和操作引擎和Spider中间通信的功能组件(比如进入Spider的Responses;和从Spider出去的Requests)

3.代码执行顺序:

①SPIDERS的yeild将request发送给ENGIN
②ENGINE对request不做任何处理发送给SCHEDULER
③SCHEDULER( url调度器),生成request交给ENGIN
④ENGINE拿到request,通过MIDDLEWARE进行层层过滤发送给DOWNLOADER
⑤DOWNLOADER在网上获取到response数据之后,又经过MIDDLEWARE进行层层过滤发送给ENGIN
⑥ENGINE获取到response数据之后,返回给SPIDERS,SPIDERSparse()方法对获取到的response数据进行处理,解析出items或者requests
⑦将解析出来的items或者requests发送给ENGIN
⑧ENGIN获取到items或者requests,将items发送给ITEM PIPELINES,将requests发送给SCHEDULER


4.个人理解,代码执行过程:

代码从爬虫文件,spider开始爬取 > 爬取的网络请求发送给引擎 > 引擎分给调度器 > 调度器将请求放入队列中 > 分给下载器去处理request并获取response > 下载器将response发送给引擎,引擎又分配给爬虫spider处理,(处理数据的是爬虫文件中的parse方法),处理之后的数据 > 交给管道pipelines去存储,在处理过程中 > 有新的请求,会再次执行上述过程

三 . Scrapy框架下建立爬虫项目

在linux系统平台下:

在终端执行命令:

1.创建项目:scrapy startproject  项目名称

2.创建爬虫:首先进入刚刚创建的项目目录下

                 接着执行:scrapy genspider  爬虫名  爬取的域名

3.执行怕爬虫:scrapy  crawl  爬虫名称

下图为常见命令:



四.配置pycharm 让Scrapy项目直接运行

步骤:1.首先在item.py配置,爬取的目标字段

格式:字段=scrapy.Field()


2.编写爬虫文件


3.编写pipelines管道文件


4.在settings.py中设置下

该字段右True改成False


在setting中打开ITEN_PIPELINES



5.在终端运行:执行爬虫文件的命令:scrapy  crawl  爬虫名称

就可以爬取到需要的数据,并保存在pipelines中设置的文件中


以上是scrapy的简单了解,接下来可以使用scrapy结合pycharm,进行网络爬虫的尝试了

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值