Scrapy框架介绍

Scrapy框架介绍Scrapy 框架介绍 Scrapy 是一个为了爬取网站信息 提取结构性数据而编写的应用框架 Scrapy 用途广泛 可用于数据挖掘 监测和自动化测试等 1 网络爬虫原理网络爬虫的英文为 WebSpider 又称做网络蜘蛛或网络机器人 简单来说就是一种按照一定的规则 自动地抓取互联网中信息的程序或脚本 1 1 爬虫执行的流程我们知道 网络爬虫的基本流程是 模拟用户使用浏览器向网站发送请求 网站响应请求后将网页文档发送过来 爬虫对网页做信息提取和存储 具体流程如图 3 1 所示 1 发送请求 爬

Scrapy框架介绍

  • Scrapy是一个为了爬取网站信息,提取结构性数据而编写的应用框架。Scrapy用途广泛,可用于数据挖掘、监测和自动化测试等。

1.网络爬虫原理

  • 网络爬虫的英文为Web Spider,又称做网络蜘蛛或网络机器人。简单来说就是一种按照一定的规则,自动地抓取互联网中信息的程序或脚本。
1.1 爬虫执行的流程
  • 我们知道,网络爬虫的基本流程是:模拟用户使用浏览器向网站发送请求,网站响应请求后将网页文档发送过来,爬虫对网页做信息提取和存储。具体流程如图3-1所示。
    在这里插入图片描述

  • (1)发送请求。爬虫设定一个URL,模拟浏览器使用HTTP协议向该网站服务发送请求。
  • (2)获取HTML文档。服务器接收到请求后,将HTML文档(或者图片、视频等其他资源)发送给爬虫。
  • (3)抽取数据。爬虫使用XPath或BeautifulSoup从HTML文档中抽取有用的数据。
  • (4)保存数据。将抽取到的数据保存到文件(CSV、JSON、TXT等)或数据库(MySQL、MongoDB)中,实现数据的持久化存储。

2.Scrapy框架结构及执行流程

  • Scrapy框架结构和流程设计遵循网络爬虫的基本原理。通过组价封装不同的功能模块;通过请求和响应类封装数据流;通过引擎指挥整个系统协调运行。
2.1 Scrapy框架结构
  • 理解了HTTP和爬虫的基本原理,就不难理解Scrapy的框架结构了。如图3-2所示为Scrapy的框架结构,包含了不同功能的组件、系统中发生的数据流及执行流程。
    在这里插入图片描述

1.组件
  • 下面简单介绍一下Scrapy框架结构中包含的组件。
  • 引擎(Engine) ,引擎犹如总指挥,是整个系统的“大脑”,指挥其他组件协同工作。
  • 调度器(Scheduler),调度器接收引擎发过来的请求,按照先后顺序,压入队列中,同时去除重复的请求。
  • 下载器(Downloader),下载器用于下载网页内容,并将网页内容返回给爬虫(Scrapy下载器是建立在twisted这个高效的异步模型上的)。
  • 爬虫(Spiders),爬虫作为最核心的组件,用于从特定的网页中提取需要的信息,即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。
  • 项目管道(Item Pipelines),项目管道负责处理爬虫从网页中抽取的实体。主要的功能是持久化实体、验证实体的有效性、清除不需要的信息等。
  • 下载中间件(Downloader Middlewares),下载器中间件介于引擎和下载器之间,主要处理Scrapy引擎与下载器之间的请求及响应。
  • 爬虫中间件(Spider Middlewares),爬虫中间件介于引擎和爬虫之间,主要工作是处理爬虫的响应输入和请求输出。
2.数据流
  • Scrapy框架结构中传递和处理的数据主要有以下3种:
    • 向网站发送的请求数据
    • 网站服务器返回的响应数据
    • 解析后的结构数据(类似于字典)。
  • Scrapy中定义的Request和Response类,用于保存请求和响应数据;Item类保存解析后的结构数据。它们分别对应于3-2中标识的Requests、Response和Items。
2.2 Scrapy执行流程
  • 图3-2中第1-4步,执行的是HTTP请求,传递和处理的是向网站服务器发送的请求数据。
  • 第1步:爬虫(Spider)使用URL(要爬取页面的网址)构造一个请求(Request)对象,提交给引擎(Engine)。如果请求要伪装成浏览器,或者设置代理IP,可以先在爬虫中间件中设置,再发送给引擎。
  • 第2步:引擎将请求安排给调度器,调度器根据数据请求的优先级确定执行顺序。
  • 第3步:引擎从调度器获取即将要执行的请求。
  • 第4步:引擎通过下载中间件,将请求发送给下载器下载页面。
  • 图3-2中第5-8步,执行的是HTTP响应,传递和处理的是网站服务器返回的相应数据。
  • 第5步:页面完成下载后,下载器会生成一个响应(Response)对象并将其发送给引擎。下载后的数据会保存于响应对象中。
  • 第6步:引擎接收来自下载器的响应对象后,通过爬虫中间件,将其发送给爬虫(Spider)进行处理。
  • 第7步:爬虫将抽取到的一条数据实体(Item)和新的请求(如下一页的链接)发送给引擎。
  • 第8步:引擎将从爬虫获取到的Item发送给项目管道(Item Pipelines),项目管道实现数据持久化等功能。同时将新的请求发送给调度器,再从第2步开始重复执行,引擎关闭该网站。

3.Scrapy安装

  • 在Anaconda中,它已经帮我们安装好了Scrapy所有的依赖库。
3.1 使用pip安装Scrapy
  • 这里还是使用pip安装Scrapy框架,命令如下:
pip install scrapy 
  • 安装后需要验证是否安装成功,在终端首先输入python,之后输入如下代码:
import scrapy 
  • 运行代码后,如果没有错误提示信息,说明Scrapy已经安装成功。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178789.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午4:29
下一篇 2026年3月26日 下午4:29


相关推荐

  • JavaScript之爆肝汇总【万字长文❤值得收藏】[通俗易懂]

    JavaScript之爆肝汇总【万字长文❤值得收藏】[通俗易懂]目录一、JavaScript简介1.1.一门客户端脚本语言1.2.JavaScript发展史1.3.JavaScript优势1.4.JavaScript引用一、JavaScript简介1.1.一门客户端脚本语言运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎脚本语言:不需要编译,直接就可以被浏览器解析执行了功能:可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验1.2.JavaScript发展史1992年,Nomba

    2022年6月22日
    25
  • apimodelproperty爆红_apimodelproperty注解

    apimodelproperty爆红_apimodelproperty注解swagger ui 和 srping 项目的整合还是非常简单的 不知道你们的项目是使用的什么架构 推荐可以去官网查看相关使用说明 以下是我用 springBoot 整合 Swagger 的一个简单案例 1 添加依赖 io springfoxspr swagger22 7 0io springfoxspr swagger ui2 7 02 创建 Swagger 配置类 通过 Config

    2026年3月18日
    1
  • 使用python快速开发桌面小工具

    使用python快速开发桌面小工具参考链接WelcometoPython.orgExtendingandEmbeddingthePythonInterpreter—Python3.7.3documentation起因更重要在日常开发中,总需要一些普通的小工具。小工具嘛,要得急,写得也急,总有很多不完善的问题,频繁修改成了一个较大的问题。比如之前用c#写了一个将excel表自动转成csv文本的工具,…

    2022年5月20日
    48
  • LVS:三种负载均衡方式比较+另三种负载均衡方式

    LVS:三种负载均衡方式比较+另三种负载均衡方式

    2021年9月12日
    55
  • 排序算法之从冒泡排序所想到的

    排序算法之从冒泡排序所想到的

    2021年12月10日
    47
  • 怎么选择靠谱Java培训机构?[通俗易懂]

    怎么选择靠谱Java培训机构?[通俗易懂]不论是从2018年TIOBE每个月的编程语言排行榜上看,还是从各知名招聘网站年底分析的招聘报告中了解,我们都不难看出,在IT行业里Java依然是技术圈中最热门、最抢手、需求量最大的编程语言!所以,我们常常能够在知乎、百度上搜索到大量类似于“如何选择一家好的Java培训机构?选择Java培训机构应该注意哪些问题?有哪些Java培训机构值得推荐?”这些换汤不换药的提问。各类问题下的答案也是参差不…

    2026年4月16日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号