python爬虫学习第二十八天-------了解scrapy(二十八天)

🎈🎈作者主页: 喔的嘛呀🎈🎈
🎈🎈所属专栏:python爬虫学习🎈🎈
✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨ 

hello,兄弟姐妹们!我是喔的嘛呀。今天我们首先来了解scrapy。为后面的学习打下基础。

一、scrapy是什么?

Scrapy 是一个用于爬取网站数据并提取结构化信息的强大 Python 框架。它可以帮助开发人员快速、高效地构建网络爬虫,从而自动化地从网页中提取所需数据。Scrapy 提供了一套完整的工具和组件,包括用于定义爬取规则的 Spider、用于提取数据的选择器(Selectors)、用于处理数据的管道(Pipeline)等,使得爬虫开发变得简单且高效。Scrapy 还支持异步处理和并发请求,可以处理复杂的爬取任务,并提供了命令行工具和调试工具,方便开发人员进行调试和监控。Scrapy 在数据挖掘、信息收集、监测和自动化测试等领域都有广泛的应用。

二、工作原理和重要功能

工作原理:

  1. 引擎(Engine):是 Scrapy 的核心,负责调度整个爬取流程的执行。
  2. 调度器(Scheduler):接收引擎发来的请求,并根据一定的策略进行调度,以确保合理高效地使用网络和系统资源。
  3. 下载器(Downloader):负责下载网页并将响应传递给 Spider。
  4. Spider:定义了如何抓取某个网站的规则,包括如何开始抓取以及如何跟踪链接等。
  5. Item Pipeline:负责处理爬取到的数据,可以进行数据清洗、验证、存储等操作。
  6. Downloader Middleware:介于引擎和下载器之间的一层组件,可以修改请求和响应,例如添加代理、设置 User-Agent 等。
  7. Spider Middleware:介于引擎和 Spider 之间的一层组件,用于处理 Spider 的输入和输出。

主要功能:

  1. Spider:定义了如何爬取某个(些)网站的规则,包括起始URL、如何跟踪链接、如何解析页面等。
  2. Selector:用于从页面中提取数据的工具,支持 XPath 和 CSS 选择器。
  3. Item:表示从网页中提取的数据,类似于字典或数据库表的行。
  4. Pipeline:负责处理爬取到的数据,可以进行数据清洗、去重、验证、存储等操作。
  5. Downloader Middleware:用于在下载器处理请求和响应的过程中进行额外的操作,比如修改请求头、处理代理等。
  6. Spider Middleware:对 Spider 的输出(Item 和 Request)进行处理的组件,可以对请求和响应进行预处理或后处理。
  7. Scrapy Shell:交互式 shell 环境,用于测试和调试 XPath 或 CSS 选择器表达式。
  8. 命令行工具:用于运行爬虫、检查爬取结果等,例如 scrapy crawl spider_name

三、工作流程

Scrapy 的工作流程可以简要地描述为以下几个步骤:

  1. 启动爬虫
    • 使用命令行工具或代码启动 Scrapy 爬虫。
  2. 引擎调度请求
    • 引擎接收到启动爬虫的命令后,会根据 Spider 的配置和规则生成初始请求,并将请求交给调度器。
  3. 调度器管理请求队列
    • 调度器会根据一定的策略管理请求队列,确保请求按照合理的顺序被发送给下载器。
  4. 下载器下载网页
    • 下载器接收到调度器发送的请求后,会下载对应的网页内容,并将下载到的响应返回给引擎。
  5. 引擎将响应发送给 Spider
    • 引擎接收到下载器返回的响应后,会将响应发送给对应的 Spider 进行处理。
  6. Spider 解析响应
    • Spider 接收到响应后,会根据预先定义的规则,解析网页内容,提取需要的数据,并生成新的 Item 对象。
  7. Item 被发送到 Item Pipeline
    • Spider 将解析得到的 Item 对象发送到 Item Pipeline 进行处理,包括数据清洗、验证、存储等操作。
  8. 数据存储
    • Item Pipeline 将处理后的数据存储到指定的数据存储介质(如数据库、文件等)中。
  9. Spider 继续爬取
    • Spider 可能会继续根据规则跟踪链接,生成新的请求,并重复上述流程,直到没有新的请求或达到停止条件。
  10. 爬虫关闭
    • 当爬取结束时,Spider 可能会发送信号给引擎,引擎收到信号后关闭爬虫。

这就是 Scrapy 的基本工作流程。通过这个流程,Scrapy 能够高效地从网页中提取数据,并进行处理和存储,实现了一个完整的网络爬虫功能。

介绍完了scrapy相信你对它已经有了一定的了解。不要着急,后面我会详细解析scrapy的知识点。那今天的学习就到这里了,我们明天再见啦。要天天开心!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【k8s】Kubernetes 1.29.4离线安装部署(总)

(一)kubernetes1.29.4离线部署之-安装文件准备 (二)kubernetes1.29.4离线部署之-镜像文件准备 (三)kubernetes1.29.4离线部署之-环境初始化 (四)kubernetes1.29.4离线部署之-组件安装…

网工学习云计算HCIE感受如何?

作为一名网工,我经常会在各种网络论坛里查询搜索一些网络技术资料,以及跟论坛里的网友交流讨论平时在工作、学习中遇到的问题、故障,因此也经常能在论坛的首页看到誉天的宣传信息。机缘巧合之下关注了誉天的B站号,自从关注了誉天的…

真实世界的密码学(一)

原文:annas-archive.org/md5/655c944001312f47533514408a1a919a 译者:飞龙 协议:CC BY-NC-SA 4.0 前言 序言 当你拿起这本书时,你可能会想,为什么又一本关于密码学的书?甚至,为什么我要读这本…

【DDD领域驱动设计】战术设计--核心概念介绍

目录 前言 战术设计 基本概念 领域内: 实体 值对象 领域服务 模块 对象生命周期: 聚合 工厂 仓库 其他: 领域事件 事件溯源 实例介绍 前言 上一篇文章 DDD-事件风暴 属于领域驱动设计中的战略设计,战略设计主要从…

数据中台工具的选型要点_光点科技

数据中台工具扮演着举足轻重的角色。想要全面理解数据中台工具的意义、作用以及应用方式,就必须深入探讨这一概念以及相关实践。 数据中台工具概述 数据中台,是一个支持数据集成、管理、分析和服务的平台,它能够帮助企业统一数据资源&#xf…

GreatSQL统计信息相关知识点

相关知识点: INNODB_STATS_PERSISTON或用STATS_PERSIST1定义单个表时,优化器统计信息将持久化到磁盘。默认情况下,innodb_stats_persistent是启用的。 持久统计信息存储在mysql.innodb_table_stats和mysql.innodb_index_stats表中。 默认情…

梦境绘师:揭秘生成对抗网络(GAN)的魔法

梦境绘师:揭秘生成对抗网络(GAN)的魔法 1 引言 在今日的深度学习领域,生成对抗网络(GAN)已成为一项无人能外的技术,以其独特的数据生成能力俘获了无数研究者和工程师的心。这项技术不仅在理论上…

CSS3新增特性(二)

四、2D 转换 • 属性名:transform (可用于制作2D转换,也可用于制作3D转转换;2D转换是平面上的转换,3D转换是在三维立体空间的转换) • 作用:对元素进行水平或垂直方向的移动、缩放、旋转、拉长…

【GitHub】2FA认证(双重身份验证)

GitHub 2FA认证(双重身份验证) 写在最前面一、使用 TOTP 应用程序配置双2FA(双因素身份验证)1. 介绍2. github3. 认证 官网介绍小结 & 补充 :权限不足or验证码错误问题 🌈你好呀!我是 是Yu欸…

增加PyQt5界面的交通流量预测(模型为CNN_GRU,CNN_BiGRU_ATTENTION,LSTM,Python代码)

1.效果视频:增加PyQt5界面的交通流量预测(模型为CNN_GRU,CNN_BiGRU_ATTENTION,LSTM)_哔哩哔哩_bilibili) 2.三个模型和数据集的介绍 交通流量预测(python代码,压缩包中带有数据,CN…

又发现一个超好用的youtube字幕翻译插件!!!

最近有了梯子,所以热衷于去youtube、Facebook、Twitter等网站浏览。但英语不好是硬伤,不懈努力之下,让我发现了一个超超超超好用的翻译插件——Relingo。 1.支持Youtube字幕翻译 官网下载安装后,打开youtube视频,右侧…

PVE虚拟机隐藏状态栏虚拟设备

虚拟机启动后,状态栏会出现一些虚拟设备,点击弹出会导致虚拟机无法使用。 解决方案: 1、在桌面新建disable_virtio_removale.bat文件,内容如下: ECHO OFF FOR /f %%A IN (reg query "HKLM\SYSTEM\CurrentContro…

【机器学习与实现】机器学习概述

目录 一、机器学习的基本概念和方法(一)基本概念(二)机器学习的一般过程举例(三)样本和参数估计 二、机器学习的步骤总结(一)机器学习的主要步骤(二)样本及样…

MyBatis基础操作

黑马程序员JavaWeb开发教程 文章目录 根据资料中提供的《tlias智能学习辅助系统》页面原型及需求,完成员工管理的需求开发一、环境准备1、准备数据库表emp2、创建一个新的springboot工程,选择引入对应的起步依赖(mybatis、mysql驱动、lombok&…

SpringBoot项目启动,传参有哪些方式?

SpringBoot项目启动,传参有哪些方式? 1.Spring级别的参数 直接在启动 Spring Boot 应用的命令行中使用 -- 后跟参数名和值的方式来传递参数。 记住:一般是对于Spring Boot应用特有的配置参数,确保它们遵循Spring Boot的配置属性命…

PC端微信软件如何多开【详细教程】

现在工作中,很多小伙伴会用到两个微信。如何在PC端同时登录多个微信呢?赶快跟着下面的教程学起来吧 1、创建一个txt文本文件 2、输入以下代码并保存 echo offstart "" "复制粘贴微信的目标地址" 需要开几个微信就复制几行exit示例…

顺序表leetcode刷题(C语言版)

一.移除元素 对于本题,共有两种解法: 思路一:创建新的数组,遍历原数组,将不为value的值放到新数组中,但本题不允许使用新的数组,因此该方法不行 思路二:使用快慢指针,原数…

2.5G交换机 TL-SE2109简单开箱评测,8个2.5G电口+1个10G光口(SFP+)

TPLINK(普联)的万兆上联的2.5G网管交换机TL-SE2109简单开箱测评。8个2.5电口,1个万兆SFP口。 TL-SH5428 万兆交换机开箱和简单的评测:https://blog.zeruns.tech/archives/707.html WiFi7无线路由器TL-7DR6560简单开箱测评&#x…

震惊!小红书矩阵账号管理-批量发布笔记

“小红书引流软件矩阵工具-笔记批量发” 昨天,有个粉丝急匆匆地来找我,一脸焦急地说:“大佬,我现在运营着好几个小红书账号,每天都要发布内容,可把我忙坏了,有没有什么高效的管理方法啊&#xf…

开源协议的对比和商业上的安全使用

开源协议的对比和商业上的安全使用 开源组件是:“任何人都可以自由使用、更改和共享(以修改或未修改的形式)的软件”。当今企业依靠开源来加速开发、降低成本和推动创新。对开放源码的糟糕管理可能会使组织面临安全、法律和操作风险。 使用…