首页 > 其他分享 >Scrapy 框架介绍

Scrapy 框架介绍

时间:2024-08-01 16:29:34浏览次数:15  
标签:Engine 框架 py Spider 介绍 Item Scrapy Middlewares

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

架构介绍

 Scrapy 框架的架构,可以分为如下的几个部分。

  • Engine,引擎,用来处理整个系统的数据流处理,触发事务,是整个框架的核心。
  • Item,项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该对象。
  • Scheduler, 调度器,用来接受引擎发过来的请求并加入队列中,并在引擎再次请求的时候提供给引擎。
  • Downloader,下载器,用于下载网页内容,并将网页内容返回给蜘蛛。
  • Spiders,蜘蛛,其内定义了爬取的逻辑和网页的解析规则,它主要负责解析响应并生成提取结果和新的请求。
  • Item Pipeline,项目管道,负责处理由蜘蛛从网页中抽取的项目,它的主要任务是清洗、验证和存储数据。
  • Downloader Middlewares,下载器中间件,位于引擎和下载器之间的钩子框架,主要是处理引擎与下载器之间的请求及响应。
  • Spider Middlewares, 蜘蛛中间件,位于引擎和蜘蛛之间的钩子框架,主要工作是处理蜘蛛输入的响应和输出的结果及新的请求。

数据流

Scrapy 中的数据流由引擎控制,其过程如下:

  • Engine 首先打开一个网站,找到处理该网站的 Spider 并向该 Spider 请求第一个要爬取的 URL。
  • Engine 从 Spider 中获取到第一个要爬取的 URL 并通过 Scheduler 以 Request 的形式调度。
  • Engine 向 Scheduler 请求下一个要爬取的 URL。
  • Scheduler 返回下一个要爬取的 URL 给 Engine,Engine 将 URL 通过 Downloader Middlewares 转发给 Downloader 下载。
  • 一旦页面下载完毕, Downloader 生成一个该页面的 Response,并将其通过 Downloader Middlewares 发送给 Engine。
  • Engine 从下载器中接收到 Response 并通过 Spider Middlewares 发送给 Spider 处理。
  • Spider 处理 Response 并返回爬取到的 Item 及新的 Request 给 Engine。
  • Engine 将 Spider 返回的 Item 给 Item Pipeline,将新的 Request 给 Scheduler。
  • 重复第二步到最后一步,直到 Scheduler 中没有更多的 Request,Engine 关闭该网站,爬取结束。

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

项目结构

Scrapy 框架和 pyspider 不同,它是通过命令行来创建项目的,代码的编写还是需要 IDE。项目创建之后,项目文件结构如下所示:

scrapy.cfg
project/
    __init__.py
    items.py
    pipelines.py
    settings.py
    middlewares.py
    spiders/
        __init__.py
        spider1.py
        spider2.py
        ...

在此要将各个文件的功能描述如下:

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

结语

本节介绍了 Scrapy 框架的基本架构、数据流过程以及项目结构。后面我们会详细了解 Scrapy 的用法,感受它的强大。

 

标签:Engine,框架,py,Spider,介绍,Item,Scrapy,Middlewares
From: https://www.cnblogs.com/JJJHaoran/p/18336927

相关文章

  • 单个 Scrapy 项目与多个项目
    我对如何存储所有蜘蛛感到困惑。这些蜘蛛将通过使用命令行调用和从stdin读取的项目输入ApacheNiFi来使用。我还计划让这些蜘蛛的子集在单独的网络服务器上使用scrapyrt返回单个项目结果。我需要在具有不同项目模型的许多不同项目中创建蜘蛛。它们都有相似的设置(比......
  • Metasploit Pro 4.22.2-2024072501 (Linux, Windows) - 专业渗透测试框架
    MetasploitPro4.22.2-2024072501(Linux,Windows)-专业渗透测试框架Rapid7Penetrationtesting,releaseJul25,2024请访问原文链接:https://sysin.org/blog/metasploit-pro-4/,查看最新版。原创作品,转载请保留出处。世界上最广泛使用的渗透测试框架知识就是力量,尤其是......
  • 一个wpf项目的搭建prism框架mvvm
    一个wpf项目的搭建prism框架mvvm简单prism项目:1.新建一个wpf的项目2.引入包:在nuget中,prism.DryIoc3.把空项目应用转化成Prism,把App基类Application改为PrismApplication,因为这个基类是分布类,其中app.xaml.cs基类改为PrismApplication,和xaml的标签,引入命名空间后改为<prism......
  • 信步漫谈之OpenEuler——介绍与安装
    目标OpenEuler系统安装配置OpenEuler图形化界面安装OpenEuler的远程连接1资源官方网站:https://openeuler.org/代码管理地址:https://gitee.com/openeulerISO下载地址:https://www.openeuler.org/zh/download/文档地址:https://docs.openeuler.org/zh/2OpenEuler是什......
  • 64.Scrapy框架
    Scrapy框架【一】介绍1)开源和协作的框架其最初是为了页面抓取(更确切来说,网络抓取)所设计的,使用它可以以快速、简单、可扩展的方式从网站中提取所需的数据。但目前Scrapy的用途十分广泛,可用于如数据挖掘、监测和自动化测试等领域,也可以应用在获取API所返回的数据(......
  • 63.Selenium框架
    Selenium框架【一】浏览器操作1)页面操作1.初始化浏览器对象#使用环境变量fromseleniumimportwebdriverbrowser=webdriver.Chrome()browser=webdriver.Chrome(path)browser.close() #关闭浏览器#使用绝对路径fromselenium.webdriver.chrome.serviceimport......
  • 微软GraphRAG框架源码解读(LLMs)
    1.引言这几天微软开源了一个新的基于知识图谱构建的检索增强生成(RAG)系统:GraphRAG。该框架旨在利用大型语言模型(LLMs)从非结构化文本中提取结构化数据,构建具有标签的知识图谱,以支持数据集问题生成、摘要问答等多种应用场景。GraphRAG的一大特色是利用图机器学习算法针对数据......
  • FFmpeg是什么,主要功能介绍
     安装:sudoyuminstallffmpeg-yFFmpeg是一套开源的计算机程序,它主要用于记录、转换数字音频、视频,并能将其转化为流。FFmpeg提供了录制、转换以及流化音视频的完整解决方案,并包含了非常先进的音频/视频编解码库libavcodec等1。FFmpeg的主要功能和特点包括:视频采......
  • 1、消息队列框架:ActiveMQ - 开源项目研究文章
    ActiveMQ是Apache软件基金会下的一个开源消息队列服务,遵循JMS1.1规范(JavaMessageService),是一种面向消息中间件(MOM)的实现。它提供高可用性、出色的性能、可扩展性、稳定性和安全性的消息传递服务。ActiveMQ的架构ActiveMQ的架构包括生产者(Producer)、消费者......
  • 1、.Net UI框架:UWP - .Net宣传系列文章
    UWP(UniversalWindowsPlatform)是微软推出的一种应用程序开发平台,它允许开发者创建能够在各种Windows10设备上运行的应用程序,包括PC、平板、手机、Xbox、HoloLens等。UWP是Windows10操作系统的核心组件之一,它提供了统一的API和开发工具,使得开发者能够编写一次代码,然后在多个......