Scrapy 框架介绍

news2024/11/27 11:40:38

一、Scrapy是什么

   Scrapy 是一个基于 Twisted 的异步处理框架,是纯 Python 实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求。我们只需要定制开发几个模块就可以轻松实现一个爬虫。

二、Scrapy优点

    1、速度快            

    2、实现大批量爬取

三、Scrapy爬虫框架的架构

 (1) Scrapy有五个部分组件组成:

中 > 引擎Scrapy Engine:用来处理整个系统的数据流处理、触发事务,是整个框架的核心

上 > 调度器Scheduler:用来接受引擎发过来的请求并加入队列中,并在引擎再次请求的时候提供给引擎。

左 > 管道item pipeline:负责处理由蜘蛛从网页中抽取的项目,它的主要任务是清洗、验证和存储数据。

下 > 爬虫器(爬虫组件) Spiders:其内定义了爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果和新的请求。

   Spider Middlewares(Spiders中间件):位于引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛输入的响应和输出的结果及新的请求。

右 > 下载器 Downloader:用于下载网页内容,并将网页内容返回给Spiders爬虫器。

   Downloader Middlewares(下载器中间件):位于引擎和下载器之间的钩子框架,主要是处理引擎与下载器之间的请求及响应。

 (2) Scrapy数据流机制:

引擎Scrapy Engine : C位,不用做事,接收任务,分发任务。

爬虫器Spiders :
     1.确认目标url,根据这个url构造一个request对象,交给引擎
     4.接收了来自引擎的response,进行解析,解析完毕,把结果给引擎
            解析结果分为2种
            --(1)如果提取出来的是url,就把所有的步骤重头再走一遍
            --(2)如果是需要进行保存的数据data

调度器Scheduler:
     2.接收了来自引擎的request对象,进行一个排序,把排序之后的结果交给引擎(假设有100个request对象,安装调度,安排谁先谁后).

下载器Downloader:
     3.接收了来自经过了排序之后的引擎的request对象,发送网络请求获取响应对象response,交给引擎.

管道item pipeline:
     5.接收了来自引擎的数据data,进行保存.

      通过多个组件的相互协作、不同组件完成工作的不同、组件很好地支持异步处理,scrapy 最大限度地利用了网络带宽,大大提高了数据爬取和处理的效率。

四、scrapy创建项目

(1) 爬虫项目 

scrapy startproject 爬虫项目名

(2)  爬虫任务

1.  cd 到项目的根目录

2.  scrapy  genspider  爬虫任务名称  域的范围.com

(3) 运行scrapy爬虫

 scrapy  crawl  爬虫任务名称 

(4) Scrapy创建结构图 

 

 各个文件的功能描述如下:

  • scrapy.cfg:它是 Scrapy 项目的配置文件,其内定义了项目的配置文件路径、部署相关信息等内容。
  • items.py:它定义 Item 数据结构,所有的 Item 的定义都可以放这里。
  • pipelines.py:它定义 Item Pipeline 的实现,所有的 Item Pipeline 的实现都可以放这里。
  • settings.py:它定义项目的全局配置。
  • middlewares.py:它定义 Spider Middlewares 和 Downloader Middlewares 的实现。
  • spiders:其内包含一个个 Spider 的实现,每个 Spider 都有一个文件。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/529036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

索引有哪些优缺点?索引有哪几种类型?

目录 一、什么是索引? 二、索引的优点 三、索引的缺点 四、索引有哪几种数据类型? 一、什么是索引? 索引是一种能够帮组Mysql高效的从磁盘上检索数据的一种数据结构。在MySQL中的InnoDB引擎中,采取了B树的结构来实现索引和数据…

matlabR2021b启动很慢和初始化时间很长解决

工具:MatlabR2021b。 问题记录,在网上下载安装包后,安装后,发现软件启动时间很长。进入界面后软件需要较长时间的初始化。才能就绪。 查询原因为软件需要在启动是查询licence。 首先在安装文件夹中启动Activate MATLAB R2021b。…

python画直线的方法

python画直线的方法,下面介绍三种: 1、使用列表解析法,只需要添加一个数据类型的变量,然后在上面添加一系列的直线,即可得到一条直线。 5、使用循环解析法和 for循环解析法两种方法相结合来画直线,即可得到…

软件测试之jmeter性能测试让你打开一个全新的世界

一、Jmeter简介 1 概述 jmeter是一个软件,使负载测试或业绩为导向的业务(功能)测试不同的协议或技术。 它是 Apache 软件基金会的Stefano Mazzocchi JMeter 最初开发的。 它主要对 Apache JServ(现在称为如 Apache Tomcat…

IDEA入门使用

IDEA概述 ​ IDEA全称IntelliJ IDEA,是用于Java语言开发的集成环境,它是业界公认的目前用于Java程序开发最好的工具。 集成环境: ​ 把代码编写,编译,执行,调试等多种功能综合到一起的开发工具。 为什么要…

Java基础-判断和循环

1 流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 1.1 流程控制语句分类 ​ 顺序结构 ​ 判…

ChatGPT 如何不使用代理,国内直连

ChatGPT 如何不使用代理,国内直连 本来是自己在 cloudfare 上面搭建了域名解析,但是最近发现了其他的方案 域名代理 最开始是参考这个文章进行的配置,一直用的很好 使用 Cloudflare Workers 让 OpenAI API 绕过避免被封禁 最近由于 Open…

《微服务实战》 第八章 Spring Cloud 之 Hystrix

前言 多个微服务之间调用的时候,假如微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的"扇出"。 如果扇出的链路上某个微服务的调用响应的时间过长或者不可用,对微服A的调用就会占用越来越…

创新特征金字塔融合,ResNeXt引领YOLOv5高效率目标检测

目录 一、介绍1、YOLOv5简介2、ResNeXt简介3、目标检测简介 二、YOLOv5及其局限性1、YOLOv5的架构与原理2、YOLOv5的优势3、YOLOv5的局限性 三、ResNeXt与特征金字塔融合1、ResNeXt的基本原理2、ResNeXt的优势3、特征金字塔的基本原理4、特征金字塔的优势5、ResNeXt与特征金字塔…

JavaEE(系列3) -- 多线程(线程的中断与线程等待)

新内容开始之前,我们总结一个知识点. Thread类中的start方法和run方法的区别? start(): 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程&#…

Nexus下载与安装详解

目前 Nexus 分为 Nexus 2.x 和 Nexus 3.x 两个大版本,在以往框架,有了3.x一定不会再更新2.x了,会继续向上延续3.x,4.x,而Nexus对于这两个版本是并行的关系。也就是2.x在更新迭代,3.x也在更新迭代&#xff0…

K8s基础12——etcd数据备份与恢复、集群版本升级、网络策略

文章目录 一、etcd备份与恢复1.1 kubeadm部署方式1.1.1 备份1.1.2 恢复 1.2 单etcd二进制部署方式1.2.1 部署1.2.2 备份1.2.3 恢复1.2.4 K8s集群二进制部署方式恢复 二、集群版本升级2.1 升级master节点2.2 升级node节点 三、网络策略3.1 核心字段释义3.2 测试案例案例1&#x…

20 KVM管理虚拟机-虚拟机生命周期示例

文章目录 20 KVM管理虚拟机-虚拟机生命周期示例20.1 创建虚拟机20.2 启动虚拟机20.3 重启虚拟机20.4 关闭虚拟机20.5 销毁虚拟机 20 KVM管理虚拟机-虚拟机生命周期示例 本节给出虚拟机生命周期管理相关命令的示例。 20.1 创建虚拟机 虚拟机XML配置文件为openEulerVM.xml # …

shellCode免杀技巧

目录 一、免杀简述 二、免杀方法 1.shellcode反转bypass 2.shellcode异或bypass 3.远程加载shellcode bypass 4.进程注入 5.未导出api bypass 6.掩日(进程注入工具) 其他的 本文章仅提供学习,切勿将其用于不法手段! 一、…

《编码——隐匿在计算机软硬件背后的语言》精炼——第17章(自动操作)

夫道成于学而藏于书,学进于振而废于穷。 文章目录 完善加法器加入代码的加法器扩大加数范围自由调用地址的加法器合并代码RAM和数据RAMJump指令硬件实现条件Jump指令零转移的硬件实现条件Jump指令的例子 总结 完善加法器 我们在第14章介绍了一个可以进行连加的加法…

在线域名批量查询工具-未注册域名批量查询软件

在线域名批量查询工具 在线域名批量查询工具是一种通过互联网进行批量查询域名相关信息和指标的工具。以下是其主要特点: 在线查询:在线域名批量查询工具可以直接在浏览器中进行查询,无需下载和安装任何软件。 批量查询:该工具…

内网渗透--frp代理设置与proxychains代理设置

标题内网渗透–frp代理设置与proxychains代理设置 内网服务器内网IP地址外网IP地址内网web服务器(windows 7)192.168.52.143192.168.213.138内网域控服务器192.168.52.138 外网服务器外网IP地址外网V8网卡外网kali192.168.213.132外网windows攻击机192…

开通小程序账号

文章目录 一、开通小程序账号1.1 登录微信公众平台注册小程序管理员账号1.2 激活邮箱1.3 信息登记 二、获取开发设置2.1 获取APP ID2.2 获取AppSecret 一、开通小程序账号 微信小程序已经成为移动应用开发的热门平台之一,许多开发者都想要开发自己的小程序。但是首先我们需要注…

Pandas中的逻辑运算符(与或非)及Python代码示例

Pandas是Python中一个非常流行的用于数据处理和分析的库,它提供了大量的函数和操作符,以便用户可以方便地对数据进行操纵。其中逻辑运算符是在Pandas中经常使用的一些操作符之一,因为它们使我们可以对数据进行逻辑上的比较和筛选。本篇博客将…

【Dart】=> [01] Dart基础-下载安装环境配置

目录 windows下载安装地址1. 下载dart-sdk并且解压到某盘符目录下2. 找到bin目录,复制bin目录完整路径3. 打开我的电脑,右键菜单,点击属性4. 找到高级系统设置,点击5. 点击环境变量![在这里插入图片描述](https://img-blog.csdnim…