Scrapy框架(4):工作流程以及数据流通

Scrapy框架(4):工作流程以及数据流通

一、Scrapy核心组件介绍

1、Scrapy Engine引擎

框架核心,负责Spider、ItemPipeline、Downloader、Scheduler中间的通讯,数据传递,触发事务

2、Scheduler调度器

可以简单想象成一个url队列(但实际为request对象)

3、Downloader下载器

下载网页内容,并返回给Spider

4、Spider爬虫

是爬虫逻辑所在的模块,用于从特定的网页中获取Item字段需要的数据,并将需要跟进的URL提交给引擎,再次进入Scheduler

5、Pipeline管道

处理爬虫从网页中抽取的数据

二、Scrapy框架工作流程

Scrapy框架(4):工作流程以及数据流通
Scrapy框架(4):工作流程以及数据流通
①Spiders的yeild将request发送给Scrapy Engine(spider–>start_urls)
②Scrapy Engine对request不会做任何处理只是将request传递给Scheduler
③Scheduler按优先级顺序生成request交给Scrapy Engine
④Scrapy Engine接收到request后,通过Downloader Middlewares(下载中间件)过滤处理后传递给Downloader
⑤Downloader下载到response数据后,又经过Downloader Middlewares(下载中间件)处理后传递给Scrapy Engine
⑥Scrapy Engine接收到response后,传递给Spiders,Spiders通过def parse()解析数据
⑦将解析的items和url发送给Scrapy Engine
⑧Scrapy Engine将items发送给pipeline,将url(request)发送给Scheduler进行递归操作

; 三、实操

1、zip将同一篇文章的数据聚集在一起

使用zip函数将同一篇文章的作者、发布时间、网址、评论点赞浏览数要对应起来,命名为article_infos(之前的代码:scrapy框架(3):CSS选择器解析数据

article_infos=zip(title,url,name,time,thumbsup,comments,views)

将断点打在Spider的pass上,调试打印第一条数据查看是否有误(注意:运行的是main.py入口文件scrapy框架(2):入口文件

Scrapy框架(4):工作流程以及数据流通

; 2、items.py中声明流通字段

每一篇文章是通过元组封装的,元组的特点是不可变。要把每一篇文章的数据封装成一个item对象在框架中流通,要在items.py中声明要流通的字段:title和name

title=scrapy.Field()
name=scrapy.Field()

Scrapy框架(4):工作流程以及数据流通

3、赋值

在Spider中声明item对象(小驼峰),并将每一篇文章的标题和作者赋值给item对象


csdnspiderProjectItem = CsdnspiderProjectItem()

csdnspiderProjectItem['title']=article_info[0]
csdnspiderProjectItem['name']=article_info[2]

运行打印出所有数据

Scrapy框架(4):工作流程以及数据流通

4、settings.py中开启ITEM_PIPELINES

要在Scrapy中流通,当然首先需要在settings.py中将ITEM_PIPELINES打开

Scrapy框架(4):工作流程以及数据流通

; 5、检查数据是否进入

需要将数据从spider中yield出来,传到piplines.py。断点打在pipelines.py的return item上,调试查看数据是否进入。

yield csdnspiderProjectItem

Scrapy框架(4):工作流程以及数据流通

Scrapy框架(4):工作流程以及数据流通
可以看到我们是成功取到了数据,下一步需要考虑的是如何将数据存入数据库。

Original: https://blog.csdn.net/Yeexxxx/article/details/117432677
Author: Yeexxxx

Title: Scrapy框架(4):工作流程以及数据流通

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/790652/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球