zoukankan      html  css  js  c++  java
  • scrapy框架解读--深入理解爬虫原理

    scrapy框架结构图:

    组成部分介绍:

    • Scrapy Engine: 
      负责组件之间数据的流转,当某个动作发生时触发事件

    • Scheduler: 
      接收requests,并把他们入队,以便后续的调度

    • Downloader: 
      负责抓取网页,并传送给引擎,之后抓取结果将传给spider

    • Spiders: 
      用户编写的可定制化的部分,负责解析response,产生items和URL

    • Item Pipeline: 
      负责处理item,典型的用途:清洗、验证、持久化

    • Downloader middlewares: 
      位于引擎和下载器之间的一个钩子,处理传送到下载器的requests和传送到引擎的response(若需要在Requests到达Downloader之前或者是responses到达spiders之前做一些预处理,可以使用该中间件来完成)

    • Spider middlewares: 
      位于引擎和抓取器之间的一个钩子,处理抓取器的输入和输出 
      (在spiders产生的Items到达Item Pipeline之前做一些预处理或response到达spider之前做一些处理)

    Scrapy中的数据流:

    • Scrapy中的数据流由执行引擎控制,其过程如下: 
      1. 引擎打开一个网站(open a domain),找到处理该网站的spider,并向该spider请求第一个要爬取的url(s);
      2. 引擎从spider中获取到第一个要爬取的url并在调度器(scheduler)以requests调度;
      3. 引擎向调度器请求下一个要爬取的url;
      4. 调度器返回下一个要爬取的url给引擎,引擎将url通过下载器中间件(请求requests方向)转发给下载器(Downloader);
      5. 一旦页面下载完毕,下载器生成一个该页面的responses,并将其通过下载器中间件(返回responses方向)发送给引擎;
      6. 引擎从下载器中接收到responses并通过spider中间件(输入方向)发送给spider处理;
      7. spider处理responses并返回爬取到的Item及(跟进的)新的resquests给引擎
      8. 引擎将(spider返回的)爬取到的Item给Item Pipeline,将(spider返回的)requests给调度器;
      9. (从第二部)重复直到(调度器中没有更多的request)引擎关闭该网站

    中间件的编写:

      • down loader middle ware – 查看文档151页

      • spider middle wares – 查看文档162页

  • 相关阅读:
    strace排除Linux服务器故障
    详解如何在linuxmint上用源码包安装nodejs
    linux 安装nodejs
    使用Vue实现购物车功能
    Vue项目中使用better-scroll
    vue项目中使用axios发送ajax
    在VUE的项目中使用字体图标以及Stylus
    Vue在使用组件中的一些需要记住的点
    Vue简易动画实现和使用animate.css库
    使用Vue.js进行数据绑定以及父子组件传值
  • 原文地址:https://www.cnblogs.com/wangchaowei/p/7503631.html
Copyright © 2011-2022 走看看