Python学习之路-爬虫进阶:爬虫框架

Python学习之路-爬虫进阶:爬虫框架

了解框架

什么是框架

框架是为了为解决一类问题而开发的程序,框架两个字可以分开理解,框:表示指定解决问题的边界,明确要解决的问题;架:表达的是能够提供一定的支撑性和可扩展性;从而实现解决这类问题达到快速开发的目的。

为什么要实现一个框架

现在网络上现成的开源第三方框架非常多,为什么还需要自己实现一个框架?

  1. 现成开源第三方框架的局限性:

    现成开源第三方框架是为了尽可能满足大部分的需求,不可能做到面面俱到,以及第三方框架的调试相对复杂

  2. 解决特定的工作需求:

    工作中会有很多特殊的需求,会经常使用某种套路去实现这些需求,那么为了提高效率可以专门把这种套路封装成一个框架

    比如专门针对电商网站、新闻资讯写一个爬虫框架;再比如针对断点续爬、增量抓取等需求写一个框架

  3. 提高自己的技术能力:

    不一定需要亲自造轮子,但是应该知道如何造轮子

如何完成一个框架

现在我们明确了框架是什么以及为什么要实现一个框架,那么到底应该如何实现一个框架呢,我们的idea从哪里来呢?

  1. 经验丰富的程序员:

    直接根据以往经验和业务的需求进行框架原型设计,并用语言去实现

  2. 经验一般的程序员:

    通常应该是先学习别人的框架如何实现的,先学习别人优秀的比较好的实现思路和方案

那么同样的,对于我们:
我们可以结合目前学习过的爬虫知识和爬虫框架,了解他们的设计思路,在这个基础上进行模仿和改进,从而实现一个框架

框架设计思路分析

学习Scrapy,提取它的设计思想

爬虫的流程

爬虫框架解决的问题是爬虫问题,先来看看爬虫的基本流程:

  1. 构建请求信息(url、method、headers、params、data)
  2. 发起HTTP/HTTPS请求,获取HTTP/HTTPS响应
  3. 解析响应,分析响应数据的数据结构或者页面结构
    • 提取数据
    • 提取请求的地址
  4. 对数据进行存储/对新的请求地址重复前面的步骤

无论什么爬虫框架,其核心都离不开上面几个步骤

scrapy爬虫流程分析
  1. 三个内置对象:

     请求对象(Request)
     响应对象(Response)
     数据对象(Item)
    
  2. 五个核心组件:

     爬虫组件
         构建请求信息(初始的),也就是生成请求对象(Request)
         解析响应对象,返回数据对象(Item)或者新的请求对象(Request)
     调度器组件
         缓存请求对象(Request),并为下载器提供请求对象,实现请求的调度
         对请求对象进行去重判断
     下载器组件
         根据请求对象(Request),发起HTTP、HTTPS网络请求,拿到HTTP、HTTPS响应,构建响应对象(Response)并返回
     管道组件
         负责处理数据对象(Item)
     引擎组件
         负责驱动各大组件,通过调用各自对外提供的API接口,实现它们之间的交互和协作
         提供整个框架的启动入口
    
  3. 两个中间件:

     爬虫中间件
         对请求对象和数据对象进行预处理
    
     下载器中间件
         对请求对象和响应对象进行预处理
    

那么对应的,我们也可以在自己的框架是实现这样几个模块和对象

相关推荐

  1. Python学习-爬虫:爬虫框架

    2024-02-17 20:38:01       40 阅读
  2. Python学习-爬虫提高:selenium

    2024-02-17 20:38:01       33 阅读
  3. Python学习-函数

    2024-02-17 20:38:01       41 阅读
  4. Python学习-MySQL

    2024-02-17 20:38:01       29 阅读
  5. Python学习-初识爬虫:基础知识

    2024-02-17 20:38:01       28 阅读
  6. Python学习-初识爬虫:requests

    2024-02-17 20:38:01       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-17 20:38:01       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-17 20:38:01       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-17 20:38:01       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-17 20:38:01       20 阅读

热门阅读

  1. 10个常考的前端手写题

    2024-02-17 20:38:01       37 阅读
  2. 基于Python的爬取天气数据及可视化分析

    2024-02-17 20:38:01       39 阅读
  3. 手机如何改自己的ip地址

    2024-02-17 20:38:01       32 阅读
  4. Spring-面试题

    2024-02-17 20:38:01       38 阅读
  5. 并查集详解及模板

    2024-02-17 20:38:01       48 阅读
  6. 学习数据结构和算法的第8天

    2024-02-17 20:38:01       40 阅读
  7. python系统学习Day3

    2024-02-17 20:38:01       31 阅读
  8. mysql读写分离

    2024-02-17 20:38:01       32 阅读
  9. Linux命令-builtin命令(执行bash内建命令)

    2024-02-17 20:38:01       31 阅读
  10. vivado DSP Block

    2024-02-17 20:38:01       32 阅读
  11. mysql存储范式简记

    2024-02-17 20:38:01       31 阅读