手写myscrapy(二)

我们看一下scrapy的系统架构设计方法和思路:

模块化设计:

Scrapy采用模块化设计,将整个系统划分为多个独立的模块,包括引擎(Engine)、调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)、项目管道(Item Pipeline)等。每个模块都负责处理特定的任务,并通过标准化的接口与其他模块进行通信。这种设计使得Scrapy的各个部分可以独立开发、测试和扩展,提高了系统的可维护性和可扩展性。

异步IO处理

Scrapy使用Twisted库来实现异步IO处理,这使得Scrapy能够同时处理多个网络请求,大大提高了爬虫的效率。异步IO处理允许Scrapy在等待网络响应的过程中继续执行其他任务,避免了阻塞操作导致的资源浪费。

数据流设计

Scrapy通过引擎(Engine)来控制数据流在系统中的流动。引擎负责接收和处理来自爬虫、调度器和下载器的请求和响应,并根据需要触发相应的事件。数据流的设计使得Scrapy能够灵活地处理各种数据抓取任务,并支持多种数据处理方式,如数据清洗、验证和存储等。

中间件机制

Scrapy提供了下载器中间件(Downloader Middlewares)和爬虫中间件(Spider Middlewares)两种中间件机制。这些中间件可以插入到Scrapy的数据流中,对请求和响应进行预处理和后处理,从而实现对爬虫功能的扩展和定制。中间件机制使得用户可以根据需要添加自定义的代码逻辑,以满足特定的数据抓取需求。

scrapy设计的还是很牛的,但是这么强大的工具,我们学习和使用都需要一定的成本,我们还是写一个简单,易学易用的scrapy;

分析一下核心功能:

  • http网络请求
  • 返回结果的标准化解析
  • 筛选需要的信息保存
  • http 网络请求 我们使用 requests 第三库来实现;
  • 返回结果使用 lxml 的 etree 库来解析;
  • 保存信息目前选择使用excel 和mysql数据库两种方式;

流程图如下:

相关推荐
Rock_yzh2 小时前
AI学习日记——PyTorch深度学习快速入门:神经网络构建与训练实战
人工智能·pytorch·python·深度学习·神经网络·学习
中等生2 小时前
uv 完全指南:Python 包管理的现代化解决方案
python
hello kitty w2 小时前
Python学习(10) ----- Python的继承
开发语言·python·学习
懒羊羊不懒@2 小时前
Java一、二维数组
开发语言·python
中等生2 小时前
uvicorn 和 gunicorn
python
爱学习的小鱼gogo2 小时前
python 单词搜索(回溯-矩阵-字符串-中等)含源码(二十)
开发语言·数据结构·python·矩阵·字符串·回溯·递归栈
AI 嗯啦3 小时前
深度学习——Python 爬虫原理与实战:从入门到项目实践
爬虫·python·深度学习
MediaTea3 小时前
Python 第三方库:Word Cloud(词云图生成)
开发语言·python
B站_计算机毕业设计之家3 小时前
python股票交易数据管理系统 金融数据 分析可视化 Django框架 爬虫技术 大数据技术 Hadoop spark(源码)✅
大数据·hadoop·python·金融·spark·股票·推荐算法
weixin_432900373 小时前
口碑好的共晶贴片机公司
python·数码相机